【问题标题】:Declaring an instance variable in another class using PHP 5.2.17使用 PHP 5.2.17 在另一个类中声明实例变量
【发布时间】:2013-07-02 02:55:10
【问题描述】:

我只想在同一个文件的第二个类中声明一个实例变量。 以下示例代码对我来说似乎没问题,但服务器在注释行出现错误:

例如:

<?php

class Locator {
    private $location = __FILE__;

    public function getLocation() {
        return $this->location;
    }
}

class Doc {
    private $loc = new Locator(); // [SYNTAX-ERROR] unexpected T_NEW

    public function locator() {
        return $this->loc;
    }
}

$doc = new Doc();
var_dump( $doc->locator() );

?>

非常感谢大家的帮助!

【问题讨论】:

  • 无法定义包含任何需要运行时评估的值的类属性 - 在类的构造函数中设置值 - 参见docs page的第一段
  • 这就是我要找的答案,谢谢!

标签: php class scope instance-variables declare


【解决方案1】:

您不能设置属性,因为它属于对象而不是类。您可以通过在构造函数中创建定位器来修复它

class Doc {
    private $loc;

    public function __construct() {
        $this->loc = new Locator()
    }
    public function locator() {
        return $this->loc;
    }
}

【讨论】:

    【解决方案2】:

    您可以在 Doc::locator() 中新建定位器类;

    class Locator {
        private $location = __FILE__;
    
        public function getLocation() {
            return $this->location;
        }
    }
    
    class Doc {
        public function locator() {
            return new Locator();  // new locator here
        }
    }
    
    $doc = new Doc();
    var_dump( $doc->locator() );
    
    ?>
    

    【讨论】:

    • 也谢谢你!我使用 __construct() 函数进行初始化,因为我需要保留我声明的实例。
    猜你喜欢
    • 2014-01-06
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2023-01-19
    • 2023-04-11
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多