命名空间 Namespace (PHP 5.3+)

沙盒机制。虚拟的层级关系,更好的隔离不同的组建。PS:以下仅为推荐用法。

  • 声明、引用、别名 (Declear, Import, Alias)

  • 声明:

  • 引用 & 别名 // 推荐保持每个引用一行

Class

send(); // 别名 use Symfony\Component\HttpFoundation\Response as Res; $r = new Res('Oops', 400); $r->send(); ### Function (PHP 5.6+) vars[$name] = $var; } public function getHtml($template) { foreach($this->vars as $name => $value) { $template = str_replace('{' . $name . '}', $value, $template); } return $template; } } ### Traits (PHP 5.4+) * 大部分编程语言都是采用继承(extend)来实现类的扩展,Traits存在的目的是注入代码片段。 * 简单的理解就是一段需要复用的代码,我们不再复制粘贴到各个文件当中,而仅仅是使用traits的方式来引入。 * 其实include好像也可以实现同样的功能? $line) { if ($n > 5) break; echo $line; } ### 闭包(Closures) (PHP 5.3+) * 通常会用在需要回调函数时,比如array_map()和preg_replace_callback()。 routes[$routePath] = $routeCallback->bindTo($this, __CLASS__); } public function dispatch($currentPath) { foreach ($this->routes as $routePath => $callback) { if ($routePath === $currentPath) { // 该函数是在addRoute函数执行时被追加 // 执行了回调函数后,赋值了responseContentType和responseBody $callback(); } } header('HTTP/1.1 ' . $this->responseStatus); header('Content-type: ' . $this->responseContentType); header('Content-length: ' . mb_strlen($this->responseBody)); echo $this->responseBody; } } $app = new App(); $app->addRoute('/users/josh', function () { $this->responseContentType = 'application/json;charset=utf8'; $this->responseBody = '{"name": "Josh"}'; }); $app->dispatch('/users/josh'); ### Zend OPcache (PHP 5.5+) * 类似于APC、XCache等第三方cache扩展,预编译PHP代码为二进制程序,缓存在内存中。 _本文档参考了《O'Reilly Modern PHP》以及PHP官方文档_