use*_*198 8 php static-variables
<?php
class Stat
{
public $var1='H';
public static $staticVar = 'Static var';
static function check()
{
echo $this->var1;
echo "<br />".self::$staticVar ."<br />";
self::$staticVar = 'Changed Static';
echo self::$staticVar."<br />";
}
function check2()
{
Stat::check();
echo $this->var1;
echo "b";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我可以像这样使用它吗?
$a = new Stat();
$a->check2();
Run Code Online (Sandbox Code Playgroud)
Mat*_*ndh 10
不可以.静态方法无法访问$this(因为$this在静态上下文中没有讨论).
如果需要在静态方法中引用当前对象,则它不是静态方法.但是,您可以从非静态方法访问静态属性和函数.
正如其他答案所说,您不能在静态方法中使用实例方法。但是,您可以将静态属性存储为实例数组。用一些这样的代码:
private static $_instances = array();
public function __construct() {
self::$_instances[] = $this;
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以在静态方法中的所有实例上调用方法。用一些这样的代码:
public static effItAll() {
foreach (self::$_instances as $instance) {
$instance->instanceMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
或者你也可以只存储最后一个实例。或者一些实例取决于参数。无论如何,您可以将任何实例存储在静态属性中,从而能够在您的静态方法中调用此实例。
| 归档时间: |
|
| 查看次数: |
12942 次 |
| 最近记录: |