Heim  >  Artikel  >  Backend-Entwicklung  >  玩玩PHP

玩玩PHP

WBOY
WBOYOriginal
2016-06-23 13:39:051042Durchsuche

  最近项目需要做GM工具。我想把它做成Web的形式。最后决定用PHP做,也见识一下这门被黑了无数次的“世界上最好的语言”。


  后来发现PHP写起来真是挺爽的。目前让我感觉最爽的有两点:


  一是可变函数的特性。假设有一个字符串变量,变量名为foo,字符串的值是"bar",那么我直接写$foo()就相当于调用bar()函数。见PHP官方手册:http://php.net/manual/zh/functions.variable-functions.php。相比之下lua似乎要多写一点点代码,而且函数似乎要能够从全局表索引到;C#和Java这样的基于字节码的静态语言(也有人说是“半静态语言”)则需要用反射机制;而C/C++这样的静态语言则做不到,除非自己实现一套通过字符串查找函数地址的机制。这是很典型的动态语言特性。在静态语言写的服务端中,如果没有反射机制,我们往往需要定义一张消息到函数的大映射表,才能将不同的消息分发给不同的函数处理;但在动态语言写的服务端中,我们可以让客户端直接将函数名发上来,服务端拿着函数名直接执行即可(当然还要加上安全性检查防止客户端攻击)。


  二是格式化字符串。在其它语言中,格式化字符串一般要使用类似string.format或sprintf这样的库函数,先传一个格式字符串参数,然后再将一个个变量传进函数,比如string.format( "'%s'的值是%d", foo, bar)。PHP当然也有需要用sprintf的时候,但因为变量名都以$开头,很多时候只需将变量直接写进字符串中即可,PHP解析器会识别它们:"'$foo'的值是$bar"。这样不仅写起来方便,可读性也好很多。


  另外还发现一个很好用的中国人写的PHP socket服务器框架:http://www.workerman.net/。使用它可以很方便地让PHP服务器和浏览器之间、和内部其它服务器之间建立长连接,并且还可以很方便地自定义协议。加进框架的QQ后发现这还是个很活跃的社区,作者反馈也很及时。如今我们中国人也有这么好的开源框架了,真是让人欣慰。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn