PHP require() 或 include() 并调用类变量?
Posted
技术标签:
【中文标题】PHP require() 或 include() 并调用类变量?【英文标题】:PHP require() or include() and call a class variable? 【发布时间】:2011-10-30 20:11:48 【问题描述】:我想这很简单,我应该可以得到,但我遇到了麻烦。我似乎无法在任何地方找到答案。
考虑以下场景:我有两个文件(我们将它们称为 index.php 和 global.php)。我正确地引用了require_once()
文件。
索引.php:
<?php
require_once('./global.php');
$database = new database();
echo $database->dbname;
?>
全局.php:
<?php
class database
public $dbname = 'jdoe';
?>
这不会在 index.php 页面上输出“jdoe”。但是...如果我将以下内容放入 global.php 中,它会起作用:
<?php
class database
public $dbname = 'jdoe';
$database = new database();
echo $database->dbname;
?>
【问题讨论】:
没有错误...它只是空白。不过,这是一个有趣的观点。 第二个不应该工作...... 哎呀...对不起,让我在我的帖子中修复这个错误。但这不是问题。 [立即尝试] 另外,您确定包含正确的文件吗?尝试 getcwd() 以确保您的补丁正确。 在没有函数包装的类中放置过程代码会导致致命错误。你确定 global.php 与 index.php 位于同一目录级别吗? 【参考方案1】:$database = new database();
你忘记了括号。另外,如果您需要有关在 php 中使用类的更多信息,请查看 Classes and Objects 的 php 文档。
更新:
阅读PHP Class Properties我发现了这个小花絮:
[类成员变量] 必须能够在编译时进行评估,并且不得依赖运行时信息才能进行评估。
我对此不是 100% 确定的,但似乎 PHP 将您的字符串分配视为“运行时信息”。尝试在构造函数中分配您的变量(无论如何这可能是更好的做法)。
class database
public $dbname;
function __construct()
$this->dbname= 'jdoe';
// Rest of class
希望对您有所帮助!如果有人能验证我的假设,那就太好了。
【讨论】:
我已经尝试过使用括号...不管怎样,同样的问题。是的,我已经阅读了 PHP 文档。 没有构造函数,你不需要 (),即使它们没有伤害。 确实如此,PMV,谢谢。我阅读了here 的属性,可能有一个解决方案。查看更新的答案。【参考方案2】:php中创建对象的语法是
$obj=new class();
你在类名后面漏掉了 ()。
【讨论】:
【参考方案3】:我觉得应该是
$database = new database();
而不是
$database = new database;
【讨论】:
我已经尝试过使用括号。这没有帮助/阻碍。 我尝试使用带括号的确切代码,它工作正常(第一个 global.php)。请查看您是否安装了支持 OOP 的 PHP?或者也许确保您实际上正在导入正确的文件。确保您没有禁止任何错误。 好的,我会看看是否还有其他我没有看到的问题。以上是关于PHP require() 或 include() 并调用类变量?的主要内容,如果未能解决你的问题,请参考以下文章