首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

PHP5的部类约束

2012-12-21 
PHP5的类型约束PHP中函数参数有类型约束。那就是,明确要求参数的类型。比如以下代码:???phpclass ca{public

PHP5的类型约束

PHP中函数参数有类型约束。那就是,明确要求参数的类型。比如以下代码:

?

?

<?phpclass ca{    public $name='';}class cb{    public $ca;    public $color;    public $array=array();   //这里我们加上了类型约束,同时也给了默认值。但我们能发现,只有对象是以引用传递的    function test($srcStr,$color,ca $ca = null,array $array=null){        $this->color=$color;        $this->ca = $ca;        $this->array = $array;        $ca->name=$srcStr;        print_r($this);    }}$cat=new ca();$cbt=new cb();$cbt->test('test','red'); //这里我们可以不传对象$cbt->test('test','blue',$cat); //我们可以传对象,但数组仍不传print_r($cat); $cat1=new ca();$arr=array(1,2,3,4,5);$cbt->test('test','black',$cat1,$arr); //数组对象全部传入array_push($arr,6,7,8,9); //再改变数组print_r($cbt->array); //结果传入的数组未变。?>

?

?

?

?

?

?

1 楼 dewei 2011-01-25   php5中,对象是不需要引用(&)的,大的数组是需要引用(&)的。 2 楼 tonyseek 2011-01-26   楼主说的类型约束好像也适用于PHP中的Interface 3 楼 renzhen 2011-05-20   dewei 写道php5中,对象是不需要引用(&)的,大的数组是需要引用(&)的。
这个完全视乎你代码的需求,如果你希望函数内参数改变而函数外也变,那就用&,否则不用。
那如果函数内的参数数组不会改变呢?
其实加和不加都没什么关系。可能有人会说,不加应用不就是传值了吗,大的数组会浪费多少内存啊。
其实PHP 5已经对赋值实现了Zero on copy,简单点说,就是,如果将一个大数组a赋值给b,一开始它们指向的是同一个数组对象,内存不会成倍增加,只有当b改变了(加一个元素等操作),PHP底层才会先复制一个新的a数组,然后再做操作。
这种机制极大的提高了传值赋值的性能,基本上不会影响性能。
详细的信息可以去网上找。 4 楼 reeze 2011-06-02   对效率应该是没有影响的,非要对比,对类型的检查倒是增加了计算。

最明显的好处就是能约束接口的使用,减少手动类型检查的代码。能规范接口 5 楼 iminto 2011-06-27   <div class="quote_title">bardo 写道</div>
<div class="quote_div">
<p>如果显式指定参数是某种类型的变量,则参加快PHP的程序效率。</p>
</div>
<p>?</p>
<p>说话要付责任的。</p>

热点排行