企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
声明类成员或方法为 static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。 由于静态方法不需要通过对象即可调用,所以伪变量`$this`在静态方法中不可用。静态属性不可以由对象通过`->`操作符来访问。 > 注意:在 PHP7 中通过(::)调用非静态方法会产生一个 E\_DEPRECATED 级别的警告,不赞成这样使用,在以后可能会取消对这种用法的支持。 编辑`/home/project/static.php` ~~~php <?php class Test { public $hi = 'Hi'; public static $hello = 'Hello'; public function sayHi() { echo $this->hi; } public static function sayHello() { echo self::$hello; } public function sayWorld() { echo " World".PHP_EOL; } } $obj = new Test(); $obj->sayHi(); $obj->sayWorld(); Test::sayHello(); Test::sayWorld(); ~~~ 执行 ~~~bash php static.php ~~~ 从结果可以看出 * 通过`::`可以执行静态和非静态方法,但是不赞成通过这种方式调用非静态方法,此方式有可能被官方移除,因此上面`sayWorld()`,应该通过`(new Test())->sayWorld()`这种方式调用 * 静态属性和方法可以通过`self`关键字调用 就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。