最近一个项目接近尾声了,工作慢慢轻松了下来,闲暇时就看看一些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,欢迎大家关注,
。
顺便做个广告:
引用
我最近使用了15G超大空间免费网络U盘—@酷盘,可在PC及手机上使用,无文件类型及大小限制,传输速度快,文件永不丢失,一起来体验吧!通过下面的邀请链接注册,你和我都将额外获得256MB的酷盘空间!
http://t.cn/aNLZje
分享到:
相关推荐
2. **MakeCode**:这可能是该脚手架工具的名字,可能包含了一些定制化的配置或脚本,用于自动生成符合特定需求的项目结构。 3. **后端**:指的是项目专注于服务器端的开发,处理HTTP请求,与数据库交互,提供API接口...
《make-3.81在Windows环境下的应用与安装》 `make-3.81.rar`是一个包含`make-3.81.exe`可执行文件的压缩包,主要用于在...理解并熟练掌握`make`的用法,对于提升编程项目的自动化程度和协同开发效率具有重要意义。
This directory contains the 3.82 release of GNU Make. See the file NEWS for the user-visible changes from previous releases. In addition, there have been bugs fixed. Please check the system-specific...
`make-4.3`作为`make`的一个版本,可能包含了一些性能优化、新功能或者修复了前一版本中的问题。具体的新特性或改进需要查看官方文档或发行说明来获取详细信息。 在Makefile中,一个基本的规则格式是: ``` target...
【绿色版makecode】是一款专为iPad设计的实时投屏软件,它允许用户通过笔记本电脑将内容便捷地投影到大屏幕上。在IT领域,这样的工具对于教育、演示和协作环境非常有用,因为它使得观众可以清晰地看到iPad上的操作,...
在实际使用中,开发者首先需要安装MSYS环境,接着解压`make-3.81.90-msys.rar`,将`make.exe`复制到MSYS的bin目录下,这样就可以在MSYS shell中使用`make`命令了。对于`patch-make-3.81.90-MSYS.patch`,则需要熟悉...
make under windows make-3.81.exe
1. **GNU make简介**: GNU make 是GNU项目的一部分,由Richard Stallman领导的自由软件基金会(FSF)开发。它是用于自动化编译过程的工具,遵循Makefile文件中的规则来决定哪些文件需要被重新编译,以确保程序始终...
尽管tmake在嵌入式领域表现出色,但它也有一些局限性,如相比qmake,tmake的社区支持和文档可能较少,更新不频繁,对于最新的Qt特性支持可能有限。此外,如果项目同时需要支持桌面和嵌入式平台,可能需要维护两套...
Dont Make Me Think.mobi
make-3.81.tar.bz2 linux安装包
在Linux系统中,`make`是一个强大的自动化构建工具,它能根据Makefile文件中的规则自动编译和链接程序。这个“make学习笔记”压缩包包含了关于`make`和Makefile的详细资料,对于想要深入理解这个工具的用户来说非常...
makecode离线版是一款由官方专为方便没有网络或是网络较差的学校进行Microbit教学的软件,不受网络限制,随时都可以使用,界面和官方界面是一模一样的,使用上也是一模一样的,欢迎有需要的朋友前来下载使用。...
在本文中,我们将深入探讨GNU Make的原理、功能、使用方法,以及在这个特定版本中可能包含的重要特性。 GNU Make是Linux和Unix系统中最常用的自动化构建工具,它的主要任务是根据一系列规则(通常保存在Makefile中...
本文将聚焦于tmake工具,深入探讨其功能、用法以及在早期QTE(Qt Embedded)环境中的应用。 tmake,全称为“跨平台的Make工具”,是专为解决跨平台编译问题而设计的。它的主要目标是提供一种统一的构建系统,使得...
Makecode 是一个基于浏览器的图形化编程环境,主要面向初学者和...通过这个“Makecode:一些makecode程序”压缩包,你可以深入学习Makecode的使用,理解.hex文件的生成和下载过程,以及可能存在的自定义扩展和示例项目。
"make"在英语中的使用极其广泛,它具有多种含义和用法,本文将详细探讨其作为"做、制造、制作"以及"使、使得"时的不同表达方式。 1. **作为"做、制造、制作"的用法** (1) **make sth.** 这个结构用于表示制作某物...
### GNU make 中文手册知识点概览 ...掌握其使用方法不仅可以极大地提高开发效率,还能确保项目构建的一致性和可靠性。通过深入学习和实践,开发者可以更好地利用 GNU make 来管理和优化他们的软件项目。
Make.Your.Own.PCBs.with.EAGLE.2nd.Edition.2017
MakeCode 街机硬件设计 ArcadeMVD-STM:基于 STM32F4 的独立 MakeCode Arcade 游戏机 microbit-shield:用于 micro:bit V2 的 MakeCode Arcade 'shield