当用:: 使用方法是被认为该方法为静态方法, 静态方法中不允许使用$this, 因为静态方法的调用不需要实例化, 而$this是实例化後才出现的, 所以静态方法类似于一个普通的函数
静态方法 是加栽到内存.而且还少了 NEW 的内存空间.速度相对快一点效率好点tukiz29
例:
静态方法 是加栽到内存.而且还少了 NEW 的内存空间.速度相对快一点效率好点tukiz29
例:
<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")/n";
} else {
echo "/$this is not defined./n";
}
}
}
class B
{
function bar()
{
A::foo();
//parent::foo();
}
}
$a = new A();
$a->foo();//动态调用,因为new了对象
A::foo();//静态调用,直接用类名去调用,没有new对象
$b = new B();
$b->bar();//在对象$b中,
A::foo();进行静态调用
B::bar();
?>
所以 静态、动态调用都指类、对象对其方法的调用,动态指的是创建(new)了对象,然后用对象变量去调用方法;静态则是没有创建对象,直接用类名去调 用。至于另一个对象那就很简单了,不同的类创建不同的对象,比如class A;class B ,$a = new A();$b = new B();$a and $b 相对之间就是另一个对象了。延伸:
伪变量 $this 通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则 $this 会被定义。此时 $this 的值是那个发出调用的对象。