我试着写了下面的代码,但不明白为什么它在spl_autoload_register()中找不到具有名称空间的类?
我得到的错误是:
警告:require_once(src/test\stringhelper.php):无法打开流:没有这样的文件或目录
autoloader.php文件:
<?php
spl_autoload_register(function($classname){
require_once "src/$classname.php"; // NOT WORKING DYNAMICALLY
// require_once "src/StringHelper.php"; // WORKING WHEN HARD CODED
});
$stringHelper1 = new test\StringHelper(); // Class with namespace defined
echo $stringHelper1->hello() . PHP_EOL; // returns text
src文件夹中的stringhelper.php:
<?php namespace test;
class StringHelper{
function hello(){
echo "hello from string helper";
}
}
我也在使用XAMPP,如果这有区别的话。
如前所述,您需要除去类名以外的所有内容,如下所示:
$classname = substr($classname, strrpos($classname, "\\") + 1);
在自动加载功能的上下文中:
spl_autoload_register(function($classname){
$classname = substr($classname, strrpos($classname, "\\") + 1);
require_once "src/{$classname}.php";
});
目前,如前所述,您正在将完全限定的名称(test\stringhelper
)传递给您的自动加载函数,该函数又尝试从匹配的文件路径中require_once
(src/test/stringhelper.php
)。由于该位置没有文件,任何加载它的尝试都将失败,因此出现错误。
问题内容: 我在命名空间和语句上遇到了一些麻烦。 我有三个文件:,和。 我正在尝试使用相对路径进行此操作,因此已将其放在所有类中: 在我的圈子课程中,我有以下内容: 如果使用这些语句,我不会出错。如果我尝试以下语句,则会得到: 致命错误:在第8行的/Users/shawn/Documents/work/sites/workspace/shape/Circle.php中找不到类’Shape \ Sh
问题内容: 想知道是否有人在使用新功能通过PHP 5.3对类进行命名空间时是否遇到了此问题。 我正在使用单独的类来生成动态类调用,以在应用程序中定义用户类型。基本上,类定义器采用类型的整数表示形式并解释它们,返回一个包含要用作该用户模型的类名的字符串。 我在全局范围内定义了具有该名称的用户类型的对象模型,但是在Editor名称空间中,该用户的编辑器具有另一个名称相同的对象。由于某些原因,PHP不允
问题内容: 当我在下面尝试添加为属性时,我正在创建Atom供稿- 我将此作为输出- 部分被切断。我需要转义- 字符吗?还是他们以其他方式添加此命名空间? 问题答案: 如果要从名称空间/前缀向$ node 添加属性,则无需事先声明名称空间。只需使用addAttribute()的第三个参数为您在第一个参数中使用的前缀提供名称空间uri。 版画 如果不需要属性本身,则可以使用删除它,而保留名称空间声明。
我得到了(超过)两个Api POSTendpoint。每一个都需要一个json作为参数。但是当我在两个endpoint参数类中使用相同的类名负载时,Swagger就不起作用了。当我改变其中的一个,例如从有效载荷到有效载荷1时,它就不起作用了。当然,我在包装类中设置了正确的名称空间,以便它找到负载。但我希望每次都使用相同的名称“有效载荷”。如何使用相同的类名负载?在这两种情况下,我都可以保留json
在OpenFOAM中,存在一个函数,其名称为exp,表示数学中的幂操作。同时,C++本身也可以进行这个计算,并且函数名称也为exp。这会导致调用的时候,编译器并不知道应该调用OpenFOAM的exp还是C++本身的exp。一种方法是将其中一个exp函数进行改名,比如将OpenFOAM中的exp改成expFoam。但还有更简单的方式。 名称空间专门用于解决上面的问题,它可作为附加信息来区分不同库中相
问题内容: 有什么办法可以将Swift类型名称作为带有名称空间(或框架名称)的字符串? 例如,如果有一个名为的类,我想获取类似的字符串。 以下仅返回类名。 我还想获得框架名称作为名称空间。 问题答案: 用途: 从Xcode 7发行说明 : 默认情况下,现在可以打印类型名称和枚举大小写,并将其转换为String而不带限定符。或仍可用于获取完全限定的名称。