`
- 浏览:
999783 次
-
PHP中的魔术方法,转自:http://4nail.iteye.com/blog/604913
1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。
php代码
class Test { function __construct() { echo "before"; } } $t = new Test();
class Test { function __construct() { echo "before"; } } $t = new Test();
输出是:
start
我们知道php5对象模型 和类名相同的函数是类的构造函数,那么如果我们同时定义构造函数和__construct()方法的话,php5会默认调用构造函数而不会调用__construct()函数,所以__construct()作为类的默认的构造函数
2.__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。
php代码
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end
我们就可以在对象操作结束的时候进行释放资源之类的操作
3.__get() 当试图读取一个并不存在的属性的时候被调用。
如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。
php代码
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在
4.__set() 当试图向一个并不存在的属性写入值的时候被调用。
php代码
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo
5.__call() 当试图调用一个对象并不存在的方法时,调用该方法。
php代码
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);
程序将会输出:
php代码
您要调用的 getName 方法不存在。参数是:Array
(
[0] => aning
[1] => go
)
您要调用的 getName 方法不存在。参数是:Array
(
[0] => aning
[1] => go
)
6.__toString() 当打印一个对象的时候被调用
这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数
class Test { public function __toString() { return "打印 Test"; } } $t = new Test(); echo $t;
运行echo $t;的时候,就会调用$t->__toString();从而输出
打印 Test
7.__clone() 当对象被克隆时,被调用
class Test { public function __clone() { echo "我被复制了!"; } }$t = new Test(); $t1 = clone $t;程序输出:我被克隆了!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
NULL 博文链接:https://hammer-nail.iteye.com/blog/467872
C# OpenVINO Nail Seg 指甲分割 指甲检测 源码 博客地址:https://lw112190.blog.csdn.net/article/details/136376932
非官方的Songkick PWA :musical_note: :tear-off_calendar: :nail_polish: Songkick的安装1.克隆此仓库并安装所有依赖项: npm install 2.添加环境变量: 您需要将以下内容添加到.env (请参阅.env-sample ): ...
请访问我们的MyStart博客,以在我们的网站上获取最新消息,以及有关各种主题的文章,例如宠物,野生动物,世界自然奇观,著名地标和健康的生活方式提示: https://blog.mystart.com保持联系Facebook:...
vi /etc/nail.rc(在配置文件最后添加) set from=mag00g@xxx.com #(需修改)收件人显示的发件人名称,可填写你的名字等 set smtp=smtp.exmail.xx.com (需修改)你所使用的外部邮箱的smtp服务器地址 set smtp-auth...
故事书插件RAW样式化组件:nail_polish_light_skin_tone: Storybook的此插件添加了一个选项卡,该选项卡显示每个故事的已编译HTML。... exports = { stories : [ '../stories/**/*.stories.js' ] , a
默认@指向项目src目录:nail_polish: 内置支持 CSS Sass Stylus Less CSS modules:police_car_light: 友好的错误记录。:laptop: 使用 TypeScript 编写:memo: 文档:package: 安装npm 安装npm install @walrus/pansy --...
它在CocoaPods Xcodeproj和xcode中受到了很大的启发。 动机:nail_polish:能够编写命令XcodeProj XcodeProj是用Swift编写的库,用于解析和使用Xcode项目。 它受到CocoaPods XcodeProj和xcode的极大启发。 使用...
Tristan Yang's Blog 记录生活,见证成长。 Features React.js & Gatsby.js V2 Markdown 写作 支持草稿 Styled Components :nail_polish: 分类 标签 分页 支持 Offline PWA Typography.js SEO Sitemap RSS Schema....
:nail_polish:输出使用Prettier进行(并且可以自定义!)。 :backhand_index_pointing_right:适用于本地和远程资源(文件系统和HTTP)。 查看示例: 用法 命令行界面 :file_cabinet:从文件系统读取规范 npx ...
用途和赫尔维蒂卡(Helvetica Neue)安装$ npm install --save-dev minami用法将存储jsdoc到您指定的jsdoc模板目录,然后: $ jsdoc entry-file.js -t path/to/minamiNode.js依赖关系在您的项目package.json文件中,...
:nail_polish: 自订变数 :milky_way: 黑暗的 :sunset: 光 用法 npm i next-antd-dark-mode --save or yarn add next-antd-dark-mode 演示 环境 :nail_polish: 文件-> antd-component.less //...
onroads.xyz 我的个人网站概述 :wrench: 用 :nail_polish: :house: 托管在 :airplane: 由安装使用程序包管理器安装依赖项$ yarn发展运行以下命令开始开发$ yarn dev部署方式在生产模式下运行应用程序之前,我们需要...
- 开源CSS,SVG和Figma UI图标提供SVG Sprite,样式化组件,NPM和API2.0的新功能 :partying_face: 200个新图标 :rocket: SVG图标 :fire: SVG精灵 :nail_polish: 样式化的组件 :atom_symbol_selector: React本地样式...
“在学习中,您将教书,而在教学中,您将学习。” 菲尔·柯林斯 :pushpin: 目录 :rocket: 用做 :crown: JavaScript :dizzy: React :hammer_and_wrench: 下一个 :nail_polish_light_skin_tone:样式化的组件 :...
特点:nail_polish_light_skin_tone: :collision: 显示每个拉取请求的实际状态: open / closed / merged 您的所有拉取请求按存储库分组: /user/<username> 添加?response_type=json以直接使用json响应添加?response...
微分方程与数学物理问题 [Nail.H.Ibragimov 卢琦(译) 2013年版,非常好的一本书,分享给大家
打开一个新的Sketch文件,然后在终端中: git clone https://github.com/auth0/auth0-react-sketchapp cd auth0-react-sketchapp/examples/styleguide && npm install npm run render 接下来, 为什么?! 在...
动漫服装 :woman’s_clothes: ...nail_polish_medium-light_skin_tone::nail_polish_medium-light_skin_tone:标头女性科折扣男性科通讯 页脚 视频 :videocassette: :videocassette: 在下面的链接中找到该项目的视频演示...