php调用类中的方法
在类里面的时候,$this->func()和self::func()没什么区别。在外部的时候,->必须是实例化后的对象使用; 而::可以是未实例化的类名直接调用。下面由小编整理了几种php调用类中的方法,希望对大家有所帮助。
php调用类中的方法(一)
<?php
class foo{
function bar() {
return $this;
}
function hello() {
echo "Hello";
}
}
$foo = new foo();
$foo->bar()->bar()->bar()->bar()->hello();
?>
php调用类中的方法(二)
<?php
class example {
var $name;
var $sex;
function name($name) {
$this->name = $name;
return $this;
}
function sex($sex) {
$this->sex = $sex;
return $this;
}
function trace() {
print("Name: {$this->name},Sex: {$this->sex}");
}
}
$person = new example;
$person->name("lisha")->sex("female")->trace();
?>
php调用类中的方法(三)
/**
* 双冒号操作符其意义应该是不实例化类而调用类中的方法或者成员等
*
*/
class man1
{
public function show()
{
echo "Hello World!";
}
}
//由于show方法中没有this,所以不出错
man1::show();
class man2
{
public static $a = 1;
public function show()
{
self::$a;
echo "Hello World!";
}
}
//由于show方法中没有this,所以不出错
man2::show();
class man3
{
public $a = 1;
public static function show()
{
echo $this->a;
echo "Hello World!";
}
}
//这种是犯错的,static 方法里面不可以用this
$p = new man3();
$p->show();
php调用类中的方法(四)
class a
{
public function show()
{
print_r($this);
echo $this->str;
}
}
class b
{
public $str = "Hello World!";
public function test()
{
a::show();
}
}
/**
*此处程序运行的结果是输出”Hello World!”
*因为$this是指向当前类实例化的一个对象,其作用范围为当前对象的上下文
*而此处A::show()中的$this其实是指向B类实例化的对象 ,而且正在对象上下文中,所以能够输出B中的变量$str的值
*/
$test = new B();
$test->test();
php调用类中的方法(五)
//自我感觉这个这种写法太绕了,最好不要用
class man1{
public function run()
{
print_r($this);//man2
$this->say();//由于this为man2实例化的对象,故可以调用man2类中的say方法
echo 'running';
}
}
class man2 extends man1{
public function say()
{
echo 'saying';
}
}
$p = new man2();
$p->run();