【问题标题】:error when creating an instance of a class from an include从包含创建类的实例时出错
【发布时间】:2016-09-28 17:03:18
【问题描述】:

对不起,如果这是一个转贴。我已经阅读了同一个问题的答案一个小时,但没有一个答案真的有帮助。

我有一个类似的文件。

<?php
namespace GA\Db;

require '/Users/brickman/work/r2s/library/GA/Db/Base.php';

if ( ! class_exists('Base')) 
    die('There is no hope!');

——老问题 我已经通过跟踪查找器检查了我的目录,并使用查找器中的文本编辑器读取了它,这绝对是我正在寻找的文件。我也知道我正在访问该文件,因为如果我放置一个不存在的路径,我会收到一个找不到文件的错误。

整个文件的存在是为了定义类 Base。

但是当我检查该类是否存在以及是否可以创建它的实例时,它会告诉我它不存在。

什么给了?

--更新

它现在正在工作。这与我引用课程的方式有关。它想要这个:

<?php
namespace GA\Db;

error_reporting(E_ALL); ini_set('display_errors', 1);

require '/Users/brickman/work/r2s/library/GA/Db/Base.php';

$test = new Base;

现在我收到有关我的包含文件中缺少类的错误,但这无关紧要。谢谢

【问题讨论】:

  • include() 更改为 require() 以强制执行致命错误,并确保在脚本顶部有 error_reporting(E_ALL); ini_set('display_errors', 1);。始终在开发/测试代码时,确保 PHP 在屏幕上显示错误。
  • 并从Base.php 文件中发布一些上下文。它是否与您尝试将其包含到的文件具有相同的namespace
  • 我刚刚在我的文件中添加了一个命名空间(复制/粘贴),现在它们共享同一个命名空间。
  • 我还将 include 更改为 require 并将该行放在脚本的顶部。非常感谢,很高兴看到额外的错误。但现在并没有错,它只是在呼应“没有希望!”

标签: php namespaces include


【解决方案1】:

如果您使用别名来导入命名空间类,请注意 class_exists 不能使用简短的别名类名 - 显然,只要将类名用作字符串,就只能使用完整命名空间版本

use a\namespaced\classname as coolclass;

class_exists( 'coolclass' ) => false

【讨论】:

  • 我刚刚编辑了我的代码以反映文件中的新更改。我没有使用任何别名,它没有运行。我会尝试使用别名。
猜你喜欢
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多