> 백엔드 개발 > PHP 튜토리얼 > Make code sweet.PHP非一般用法的一些总结(1)

Make code sweet.PHP非一般用法的一些总结(1)

WBOY
풀어 주다: 2016-06-13 10:54:47
원래의
949명이 탐색했습니다.

Make code sweet.PHP特殊用法的一些总结(1)
   最近一个项目接近尾声了,工作慢慢轻松了下来,闲暇时就看看一些PHP的框架和一些优秀的开源软件中的代码,一来可以借鉴一下其中的常用代码和函数,二来通过阅读别人的代码了解一些平时不太常见的函数以及特殊用法。这些代码都是针对PHP 5编码的,这样才能充分学习最新的特性。下面是我这段时间阅读代码的特殊用法的一些总结。
    首先我们来说说PHP中的语法糖,在复杂的PHP应用中,一般都趋向于使用MVC框架,或者通用的,或者自己造新的,为了美观易用都少不了撒上一点语法糖。以下内容会有用。
1.魔法方法,让对象更丰富一点
PHP5新增了几个魔法方法,其中一些方法可以让对象执行其不存在的方法和获取不存在的属性。这个特性应该是最家喻户晓的高级用法,如果你不知道,可以查看PHP Manual里Overloading这一节。

__call and __callStatic
在执行对象的不存在的方法时触发,原型如下:

mixed __call ( string $name , array $arguments )mixed __callStatic ( string $name , array $arguments )
로그인 후 복사


__set and __get ,__isset  and __unset
在操作不存在的对象属性时触发,原型如下:
void __set ( string $name , mixed $value )mixed __get ( string $name )bool __isset ( string $name )void __unset ( string $name )
로그인 후 복사


2.让数组面向对象一点

stdClass
有时候我们希望通过对象方式访问元素,那可以用stdClass,它类似于阉割的使用对象方式->访问元素的array,鄙人感觉使用它完全是追求视觉上的感觉和少打两个字符,不过话说回来,这些在编程美学上也是很重要的不是吗?
从Array转stdClass,可以遍历数组自己添加。从stdClass转Array,可以使用函数get_object_vars来获取。
最常见使用它的例子就是mysql_fetch_object和json_decode。

3.让数组‘无处不在’
曾经看帖有人说PHP是面向数组编程,细细想来不无道理,PHP中的数组操作十分强大方便,数组操作主要包括[]操作符,foreach,和count函数,想让你的类也拥有这些功能,当然可以,实现如下接口吧。

ArrayAccess
实现该接口可以让对象支持[]操作,原型如下:
ArrayAccess {/* Methods */abstract public boolean offsetExists ( string $offset )abstract public mixed offsetGet ( string $offset )abstract public void offsetSet ( string $offset , string $value )abstract public void offsetUnset ( string $offset )}
로그인 후 복사


Iterator
实现该接口可以让对象支持foreach,原型如下:
Iterator extends Traversable {/* Methods */abstract public mixed current ( void )abstract public scalar key ( void )abstract public void next ( void )abstract public void rewind ( void )abstract public boolean valid ( void )}
로그인 후 복사

这个接口相对比较复杂,在于foreach操作中接口函数的执行顺序。简单来说就是:rewind/next->valid->current->key,具体可以参看PHP Manual中相关部分,这部分写的很清楚的。

Countable
实现该接口可以让对象支持count函数,原型如下:
Countable {/* Methods */abstract public int count ( void )}
로그인 후 복사


今天就先总结到这里,日后我准备继续写session处理,autoload,错误处理等相关内容的一些总结纲要,以强化自己的记忆,方便日后查询。
我的微博地址:http://weibo.com/jameren,欢迎大家关注,Make code sweet.PHP非一般用法的一些总结(1)  。
顺便做个广告:
引用

[email protected],可在PC及手机上使用,无文件类型及大小限制,传输速度快,文件永不丢失,一起来体验吧!通过下面的邀请链接注册,你和我都将额外获得256MB的酷盘空间! http://t.cn/aNLZje

1 楼 liuzhiqiangruc 2011-07-10  
不错,PHP5的一些特性确实能让PHP更优雅,看起来更面向对象
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿