关於PHP 引用(&) 的疑问??

pm168 发布于 2013/11/07 23:18
阅读 484
收藏 3
PHP

在一些相容 PHP 4.x 的程序中...常看到使用 "引用"....

1."引用" 是否都用在 PHP 4.x

2.PHP 5.2、5.3.... 是不是有新方式可以代替 "引用"?

3. CI框架里的....$class =& load_class('a','b'); ....这样做有何好处?

4.一个项目中.....引用使用在啥场景(麻烦说说好处在哪儿)??

请高手们...解答我的疑惑~~谢谢!

加载中
0
Choate
Choate

PHP4那时候的对象还没有PHP5的那么强大,PHP4中如果new class 没有引用它是一个复制操作。

引用不止用在PHP4,PHP5也有用。

PHP5的对象是隐化引用功能的,所以并不需要像php4中直接显示的写出来。

如果你说是在函数中的话,没有新的方式代替引用,如果有代替会直接淘汰掉引用这个功能。

至于引用能干什么,请参考PHP手册:引用

0
leo108
leo108
推荐使用显示引用的地方只有一个,大数据的操作,例如几十M的数组,如果不使用引用,每传入一个函数就要在内存中复制一份几十M的数组
你打球像那谁
你打球像那谁
写入时复制?
离开江湖
离开江湖
真的?受教了
0
hysjw
hysjw
引用操作的是本体 否则会复制进去 PHP底层是C
0
南湖船老大
南湖船老大

附带一句,CI的编程思想还是PHP4的时代,后来出了个PHP5的框架,叫做考蛤蟆。

如果要提OO,就不要拿CI做例子。

pm168
pm168
感谢您的回答...我并非OO拿CI作例子...而是看到CI使用了很多的引用! modoer 中也用了很多....我问引用的问题...其实是想改modoer, 并且觉得 modoer程序语法太老旧了!!
0
月影又无痕
月影又无痕
CI框架的写法还是PHP 4的语法,完全没有必要那么写的。
pm168
pm168
感恩...
0
老陌
老陌

1. 调用一个函数时, 可以传值,也可以传引用。 传值 相当于内存拷贝, 复制一份新的数据给函数, 原来的数据不会变化。 传引用 相当于传内存地址,函数内 和 函数外使用同一份数据,也就是函数内变量的修改,函数外也会修改。比如一个大数组,传引用效率就高点点,减少内存IO和使用量。

2. 有很多时候,可以使用引用来生成树形结构,效率比递归好很多。 

3. 在PHP5中 对象的赋值是个引用的过程。例如$a=new stdClass; $b=$a; 其实等效于$a=new stdClass; $b = &$a; 想要拷贝对象的副本,需要魔术方法 __clone.

pm168
pm168
第3点有让我长知识...谢谢!
0
mark35
mark35

引用来自“南湖船老大”的答案

附带一句,CI的编程思想还是PHP4的时代,后来出了个PHP5的框架,叫做考蛤蟆。

如果要提OO,就不要拿CI做例子。

CI之前为了兼容php4所以一直坚持不oo,于是部分项目成员出来开发了OO的kohama并支持PDO。再后来CI升级放弃了php4支持也oo了~
0
宏哥
宏哥

引用来自“mark35”的答案

引用来自“南湖船老大”的答案

附带一句,CI的编程思想还是PHP4的时代,后来出了个PHP5的框架,叫做考蛤蟆。

如果要提OO,就不要拿CI做例子。

CI之前为了兼容php4所以一直坚持不oo,于是部分项目成员出来开发了OO的kohama并支持PDO。再后来CI升级放弃了php4支持也oo了~

Kohana从3开始, 已经脱离原有的基于CI的代码了.

我采用了很多kohana的类. 特别是它的URL, Request和类加载部分.

其他的, 好像也没有太多东西.

0
mark35
mark35

引用来自“宏哥”的答案

引用来自“mark35”的答案

引用来自“南湖船老大”的答案

附带一句,CI的编程思想还是PHP4的时代,后来出了个PHP5的框架,叫做考蛤蟆。

如果要提OO,就不要拿CI做例子。

CI之前为了兼容php4所以一直坚持不oo,于是部分项目成员出来开发了OO的kohama并支持PDO。再后来CI升级放弃了php4支持也oo了~

Kohana从3开始, 已经脱离原有的基于CI的代码了.

我采用了很多kohana的类. 特别是它的URL, Request和类加载部分.

其他的, 好像也没有太多东西.

我用CI也是觉得它够简洁,常用的功能不需要我重新造轮子,完全满足我的基础需求。如果换成kohana也应该是一样的结果。

既然选了CI也懒得再换,反正基础功能模块大家都差不多,除了那个用C编写的yaf框架,其他框架的性能差别也不足以让人有更换的需要。

0
宏哥
宏哥

引用来自“mark35”的答案

引用来自“宏哥”的答案

引用来自“mark35”的答案

引用来自“南湖船老大”的答案

附带一句,CI的编程思想还是PHP4的时代,后来出了个PHP5的框架,叫做考蛤蟆。

如果要提OO,就不要拿CI做例子。

CI之前为了兼容php4所以一直坚持不oo,于是部分项目成员出来开发了OO的kohama并支持PDO。再后来CI升级放弃了php4支持也oo了~

Kohana从3开始, 已经脱离原有的基于CI的代码了.

我采用了很多kohana的类. 特别是它的URL, Request和类加载部分.

其他的, 好像也没有太多东西.

我用CI也是觉得它够简洁,常用的功能不需要我重新造轮子,完全满足我的基础需求。如果换成kohana也应该是一样的结果。

既然选了CI也懒得再换,反正基础功能模块大家都差不多,除了那个用C编写的yaf框架,其他框架的性能差别也不足以让人有更换的需要。

我也认为CI和Kohana没有太大区别

Kohana有个先进的地方, 就是类加载, 可以指定很多目录, 我不知道CI是否有这样的功能.

我改进了这点, 将目录树形成一个Array, 加载速度非常快.

早先选择Ko就是CI的类命名不太规范,是倒过来的. 后来据说也修改了.

pm168
pm168
感恩...学习了!
返回顶部
顶部