通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值。
构造方法的在类中的声明格式
function __constrct([参数列表]){
方法体//通常用来对成员属性进行初始化赋值
}
__get
这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的(比如:“echo
$p1->name”这样直接获取是错误的),但是如果你在类里面加上了这个方法,在使用“echo
$p1->name”这样的语句直接获取值的时候就会自动调用__get($property_name)方法,将属性name传给参数$property_name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。
case-1:给类中的静态变量赋值:
class PHPJungle{private static $__instance = null# 类中的私有成员:静态变量
public function __construct(){
}
public static function getInstance(){
if(self::$__instance instanceof self)
return self::$__instance # 给静态变量赋值
return new self()
}
public function anyMethod(){
echo 'Hello world!','<hr>'
return
}
}
$PJ = new PHPJungle()
$PJ->getInstance()->anyMethod()
case-2:给函数中的局部静态变量赋值:
function hello(){static $total = 0
echo $total,'<hr>'
$total++ # 给函数中的局部静态变量赋值
}
hello()# 0
hello()# 1
hello()# 2
PHP不支持这种调用方式,你的需求是不能实现的。
如果你不能改动函数,那么你可以做一个封装。PHP的语法比较灵活,有几种替代方式你可以借鉴。这些例子都有广泛的应用。
示例一:如果参数值为null,则在函数里强制赋值为默认值
<?phpfunction foo2($a=1,$b=2,$c=3) {
if ($a === null) $a=1
if ($b === null) $b=2
if ($c === null) $c=3
foo($a, $b, $c)
}
foo(1, null, 3)
示例二:使用数组参数
<?phpfunction foo3($array=array()) {
extract($array)
if (!isset($a)) $a=1
if (!isset($b)) $b=2
if (!isset($c)) $c=3
foo($a, $b, $c)
}
foo(array('a'=>1, 'c'=>3))
python是支持你所说的那种调用方式的:
def foo(a=1, b=2, c=3):pass
foo(a=1, c=3)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)