php 类的成员变量,PHP 类成员变量规范得一些理解。

今儿写代码是发现一个问题:

PHP 类 成员变量不能接受方法得返回值

做以下测试:

bin_2.php

* Created by PhpStorm.

* User: Administrator

* Date: 14-12-4

* Time: 下午9:45*/header("Content-type:text/html;charset=utf-8");

require_once(‘bin_1.php‘);

require_once(‘bin_3.php‘);classbin_2{//$bin_3 = new bin_3();//$bin_3->getStr_1();

public$testString ;//public $testString_1 = getStr();//public $testString_2 = test();//public static $testString_3 = self::test_1();

publicfunction test(){

echo getStr();

}public staticfunction test_1(){return "abc";

}

}

$class = newbin_2();

$class->test();

bin_1.php

bin_3.php

* Created by PhpStorm.

* User: Administrator

* Date: 14-12-4

* Time: 下午10:22*/

classbin_3{

function getStr_1(){return "abc";

}

}

已上测试出 类成员变量无法赋值为方法得返回值

但是有点感觉自相矛盾:

首先;普通成员变量,无法被赋值,很正常,因为,这些变量属于对象。

//$bin_3 = new bin_3();

//$bin_3->getStr_1();

此处表明类内部,成员方法外部无法实例化对象。但是当一个类实例化得时候,在编译过程中,为何不能实例化另外一个类来对自己来实现一些业务需求呢?也许你会说直接继承该类,但是如果依赖很多个类呢,PHP也不支持多继承。

//public $testString_1 = getStr();

成员变量无法使用其他文件得某个方法,这个也说不过去,因为bin_1.php不是一个类,导入进来后,改文件就拥有了bin_1得全部。为何不能使用自己内部的方法为自己变量赋值?就像和构造方法一样,一开始为自己成员变量赋值。不过这样还是有缺点,感觉构造方法这个东西的重要性就远远被削弱,而且造成了代码得难维护性,因为有可能你用了N个这样的方法,但是如果用构造方法,就等于是封装了全部,何乐而不为。

//public $testString_2 = test();

不支持,调用自身某个方法,这也是正确得思想,因为在实例化的过程,还是哥封闭得过程,只是对象本身,而没被指定任务,譬如调用某某方法等等,所以既然是封闭的,为何不直接等于,而要写成一个方法呢?

//public static $testString_3 = self::test_1();

静态变量,无法被自身静态方法赋值,想必这和上面也是一样的意思吧。

但是在日常代码编写中,也许某个成员变量,要依赖于别的类业务支持,那么我们就乖乖得放在构造方法中。增加代码得可维护性。较高得封装度。

原文:http://www.cnblogs.com/bin-pureLife/p/4145246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值