PHP 无法创建具有命名空间的类的实例

标签 php namespaces instance

我有以下问题:

这是我的 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/

相关文章:

php - 隐藏字段不能以 zend 形式工作

c++ - rogue like 游戏初始化错误

c# - 调用实例方法而不调用构造函数

php - 如何使用 Google Analytics 捕获网站 API 流量数据?

php - 对象下有许多对象

用于常量内存变量使用的 CUDA 5.0 命名空间

wpf - 自定义 WPF 命名空间映射在 Visual Studio 2010 中失败

c# - Xml 命名空间前缀规范器

Java OOP - 学习数组元素实例,用于模拟人类生活......交配和新生

php - 如何在Codeigniter中通过id删除记录