PHP 类里赋值一般用哪个函数,如何分辨

PHP 类里赋值一般用哪个函数,如何分辨,第1张

construct

通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值。

构造方法的在类中的声明格式

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,则在函数里强制赋值为默认值

<?php

function 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)

示例二:使用数组参数

<?php

function 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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7319286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存