我有以下问题:
这是我的 super 基础课:
class A
{
function foo()
{
echo "bar";
}
}
现在在类声明之前,我使用以下代码:
$a = new A();
$a->foo();
当我在浏览器中打开 php 文件时,输出是“bar”。美好的!
现在我想在另一个文件中做同样的事情。
首先,我直接声明了以下命名空间:
namespace model\dbAction;
这是我的具有上述类的文件所在的路径。
所以在另一个 php 文件中,我执行以下操作:
$a = new \model\dbAction\A();
$a->foo();
但是我没有得到任何输出,之后其他代码将无法运行,因此看起来它在类实例化后直接中断。
为什么在另一个文件中实例化类不起作用的任何想法?
谢谢!
完整代码第一个php文件:
<?php
namespace model\dbAction;
class A
{
function foo()
{
echo "bar";
}
}
第二个文件的完整代码(我在浏览器中调用):
$a = new \model\dbAction\A();
$a->foo();
最佳答案
您还需要include
该文件 - 提供命名空间本身不会为您包含该文件...除非您使用自动加载器。见:How do I use PHP namespaces with autoload?
关于PHP 无法创建具有命名空间的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821636/