接上一节课,我们专门新建了一个godconfig类,设置了两个属性prj_name(项目名),prj_author(作者),然后我们获取标准输入(stdin)把结果保存在了类里面。
好吧,这节课的名字比较奇葩-我得了”懒癌”,假如我们忘记写godconfig类的属性,我们的程序还会运行吗?答案是依旧可以,PHP会自动给你的类增加属性(这是老师PPT原话)。
GOON,继续懒下去,现在godconfig类都不想创建了。这里我们用到$gc = new stdClass();
前面这个点很简单,我就不贴代码和运行结果了。
下面,我们有又一个实战需求:我们在函数文件里写一个方法,functionTC() //temp class的意思(这名字都是老师随意的)。代表返回一个临时类。
第一种写法:
<span style="color: #000000;">php </span><span style="color: #0000ff;">require</span>('godconfig.php'); <span style="color: #008000;">//</span><span style="color: #008000;">引入gonconfig这个文件</span> <span style="color: #0000ff;">class</span> godinit <span style="color: #008000;">//</span><span style="color: #008000;">创建一个类,godinit</span> <span style="color: #000000;">{ </span><span style="color: #0000ff;">static</span> <span style="color: #800080;">$v</span>="god version is 1.2"; <span style="color: #008000;">//</span><span style="color: #008000;">声明一个静态属性$VERSION</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> init() <span style="color: #008000;">//</span><span style="color: #008000;">静态方法 init</span> <span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc = new godconfig(); //实例化godconfig里定义的类 //$gc = new stdClass();</span> <span style="color: #0000ff;">echo</span> "input your project name?".<span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc -> prj_name = fgets(STDIN); //从标准输入中获取用户输入的字符并赋值给实例化属性$prj_name</span> <span style="color: #800080;">$prj_name</span> = <span style="color: #008080;">fgets</span>(STDIN); <span style="color: #008000;">//</span><span style="color: #008000;">重新获取用户输入,并赋值给$prj_name</span> <span style="color: #0000ff;">echo</span> "input your author name?".<span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc -> prj_author=fgets(STDIN);</span> <span style="color: #800080;">$prj_author</span> = <span style="color: #008080;">fgets</span>(STDIN); <span style="color: #008000;">//</span><span style="color: #008000;">重新获取用户输入,并赋值给$prj_author</span> <span style="color: #0000ff;">echo</span> json_encode(TC(<span style="color: #0000ff;">array</span>('prj_name'=><span style="color: #800080;">$prj_name</span>,'prj_author'=><span style="color: #800080;">$prj_author</span><span style="color: #000000;">))); }</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> __callStatic(<span style="color: #800080;">$p1</span>,<span style="color: #800080;">$p2</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">echo</span> "error function"<span style="color: #000000;">; } } </span>?>
同时,我们在god_func7这个文件中,写一个TC方法:
<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">functions for PHP7</span> <span style="color: #0000ff;">function</span> genConfig(<span style="color: #800080;">$cnt</span>):<span style="color: #0000ff;">string</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #008080;">getcwd</span>().'/god.json',<span style="color: #800080;">$cnt</span>).' of bytes is written.'.<span style="color: #ff00ff;">PHP_EOL</span>.'god config is created'<span style="color: #000000;">; } </span><span style="color: #0000ff;">function</span> TC(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #ff0000;">$get_class = new</span><span style="color: #000000;"><span style="color: #ff0000;"> stdClass();</span> </span><span style="color: #ff0000;">foreach ($p as $k => $v){ $get_class -> $k=$v; } return $get_class</span><span style="color: #000000;"><span style="color: #ff0000;">;</span> }</span>
然后我们看下结果,还是和原来的写法得到的结果一毛一样:
OK,现在可以实现godconfig都不用建了。
还有第二种写法:我懒球得记了。好吧,这才是真正的懒。
第三种写法,和PHP7匿名类有关。
PHP中的构造函数是__construct(参数) {} ,类在实例化的时候首先会执行这个函数。接下来我们来看PHP7 的匿名类(其实没啥神秘,所谓匿名就是没名字而已).只不过区别在于,如果匿名类要使用外部变量,需要传进去,否则无法使用。
<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">functions for PHP7</span> <span style="color: #0000ff;">function</span> genConfig(<span style="color: #800080;">$cnt</span>):<span style="color: #0000ff;">string</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #008080;">getcwd</span>().'/god.json',<span style="color: #800080;">$cnt</span>).' of bytes is written.'.<span style="color: #ff00ff;">PHP_EOL</span>.'god config is created'<span style="color: #000000;">; } </span><span style="color: #0000ff;">function</span> TC(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">class</span>(<span style="color: #800080;">$p</span>){ <span style="color: #008000;">//</span><span style="color: #008000;">this is 匿名类</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$p</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$k</span> => <span style="color: #800080;">$v</span><span style="color: #000000;">){ </span><span style="color: #800080;">$this</span> -> <span style="color: #800080;">$k</span> = <span style="color: #800080;">$v</span><span style="color: #000000;">; } } }; }</span>
其实上面这个一点都不懒,写这么多代码^_^;
还是看看结果吧:
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的《 PHP魔鬼训练课第一阶段》。本学习笔记小卒于博客园首发, 如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址。
恶补知识点:
1、stdClass:PHP内置顶层类,实际上是一个基类,空白的。啥都没有。如果你临时用用的,其他地方很少用。那么根本不需要新建什么实体类。直接new 一个stdClass就可以了。
2、foreach遍历数组
3、匿名类:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。