很多站长朋友们都不太清楚php静态类调用静态方法,今天小编就来给大家整理php静态类调用静态方法,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php直接用类名调用静态方法会不会触发类的构造函数 2、 php静态方法如何运行后触发某个方法 3、 php 使用静态方法的几个注意事项说明 php直接用类名调用静态方法会不会触发类的构造函数调用静态方法与触发类的构造函数没有必然关系。但是静态方法可以实例化类本身,这时候会触发构造函数,而且可以传参数。如:
class classname{
private function __construct($a){
$this->a = $a;
exit($this->a);//打印一下
}
public static function staticfun($a){
new self($a);
}
}
// use case as follow:
$a = '测试123';
classname::staticfun($a);
php静态方法如何运行后触发某个方法使用self关键字。
php静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性,从当前类(不是子类)中访问静态方法或属性,可以使用self关键字,self指向当前类,就像this指向当前对象一样,不能再对象中调用静态方法,静态方法和属性又被称为类方法和类属性,因此不能再对象中使用伪变量this。
php,又称超文本预处理器,是一种通用开源脚本语言。其是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。
php 使用静态方法的几个注意事项说明1. 即使类中的方法并未用static声明,但其未使用到可改变的类成员变量,在外部仍可用操作符::来调用;
2. 以静态方式(用::操作符)调用的方法中$this的取值是由调用时的上下文决定的!而不是定义他的类!!
例如以下的代码:
<?php
class TestClass1
{
public $normal_v = 'normal_v from TestClass1';
public static $STATIC_V = 'STATIC_V from TestClass1';
public function test_func1()
{
echo $this->normal_v.'<br />'.self::$STATIC_V;
}
}
class TestClass2
{
public $normal_v = 'normal_v from TestClass2';
public static $STATIC_V = 'STATIC_V from TestClass2';
public function test_func2()
{
TestClass1::test_func1();
}
}
$t2 = new TestClass2();
$t2->test_func2();
这段代码是输出会是什么呢,我原以为会是normal_v from TestClass1 <br /> STATIC_V from TestClass1,测试发现其实我错了,正确的输出是:
normal_v from TestClass2
STATIC_V from TestClass1
说明:test_func1()虽然是在TestClass1中定义的,但却是在TestClass2中调用的,其内部的$this变量则是由TestClass2决定的!
其实这两个类的关系应该属于"双向关联".
关于php静态类调用静态方法的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php静态类调用静态方法 php类的静态调用和实例化调用各自的利弊的详细内容...