请问以下PHP示例中$_POST['var1']是如何赋值给$m_value的?
赋值流程解释
整个过程和普通PHP类的参数传递、构造方法执行逻辑完全一致,匿名类只是没有显式类名,类的基础规则没有变化,核心分为3个步骤:
- 第一步:实例化传参
执行new class($_POST['var1'])时,括号内的$_POST['var1']会先计算出值为字符串'another_type',这个值会作为参数传入匿名类的构造方法,对应构造方法的第一个入参$input。 - 第二步:构造方法内做值映射
构造方法拿到$input的取值'another_type'后,执行switch分支判断,命中case 'another_type'的条件,执行对应分支的逻辑$this->m_value = 3;,完成私有属性$m_value的赋值。 - 第三步:取值验证
公有方法getValue()可以访问同一个类内部的私有属性,所以调用$valueObj->getValue()时就会返回之前赋值的3。
注意:这里并不是直接把
$_POST['var1']的原始值赋值给$m_value,而是做了一层输入校验和映射转换,只有输入是三个指定的字符串时才会给属性赋值为对应数字,否则直接抛出异常,避免非法输入。
内容的提问来源于stack exchange,提问作者NameDoesNotExist
相关产品推荐
相关产品推荐

