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() 并调用类变量?的主要内容,如果未能解决你的问题,请参考以下文章

PHP require() 或 include() 并调用类变量?

PHP include 和 require 语句

PHP中include和require语句的区别

php的require和include有啥区别? [复制]

php require() 不适用于相对或完整

2017.7.25