php类的实例化和调用,关于PHP静态方法调用和实例化类调用的区别

本篇文章的内容介绍的是关于PHP静态方法调用和实例化类调用的区别 ,现在分享给大家,有需要的朋友可以参考一下

1.首先来澄清一些观点

由于静态方法在内存中只有一份,无论你调用多少次,都是共用的,而且没有对象的概念,所以不能在静态方法里面使用$this调用,如果非得调用的话,只能实例化自身类

而实例化不一样,每一个实例化是一个对象,在内存中是多个的

5e08abe81780c35dd9f3f88fedafe57f.gif<?phpError_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........

但是实例化的类是可以调用静态方法的。

*/

5e08abe81780c35dd9f3f88fedafe57f.gif

5e08abe81780c35dd9f3f88fedafe57f.gif<?phpclass A{ public $name = 'zongshuai'; public function bar(){ echo 'bar'.PHP_EOL;

} public static function foo(){ echo self::$name.PHP_EOL;//报错

}

}

A::foo();/*

静态方法不能调用非静态属性 。不能使用self::调用非静态属性。*/

5e08abe81780c35dd9f3f88fedafe57f.gif

总结:

类》访问->静态方法(类的方法)->可以

类》访问->普通方法(对象的方法)->不可以(虽然方法里不用$this关键字时,可以!但不支持这种写法)

对象》访问》静态方法(类的方法)->可以

对象》访问》普通方法(对象的方法)->可以

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值