命名空间 Namespace (PHP 5.3+)#
沙盒机制。虚拟的层级关系,更好的隔离不同的组建。PS:以下仅为推荐用法。
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官方文档_