1、观点一:
- 静态方法只有一个,无论你调用多少次,都是共用的,是没有对象的概念,因此不能在静态方法里面使用$this调用,如果非得调用的话,只能实例化自身类
- 实例化不一样,每一个实例化是一个对象,拥有多个。
下面用一个实例来了解一下
<?php
Error_reporting(E_ALL|E_STRICT);
class A{
public function bar(){
echo 'bar'.PHP_EOL;
}
public static function foo(){
echo 'foo'.PHP_EOL;
}
}
A::bar();//会报错
A::foo();//正确
$obj = new A();
$obj -> foo();//正确
/*
bar()是一个非静态方法,应该由对象来调用,但用静态来调用此方法也可以执行,而严格状态下,此方法会执行,同时报错,
Strict Standards: Non-static method Human::easyeat() should not be called statically in........
但是实例化的类是可以调用静态方法的。
*/
<?php
class A{
public $name = 'kangbazi';
public function bar(){
echo 'bar'.PHP_EOL;
}
public static function foo(){
echo self::$name