
图片来自:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
From code planet
图片来自:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
首先需要安装runkit扩展
这是原有类
namespace Fyn;
class Hello
{
public function say(string $name): string {
return sprintf('Hello %s', $name);
}
}
通过runkit覆盖(必须先将类load进来才能覆盖)
if (class_exists(\Fyn\Hello:class)) {
runkit_method_redefine(
\Fyn\Hello:class,
'say',
'$msg',
'return "Nihao {$msg}";'
);
}
更多方法:http://php.net/manual/zh/book.runkit.php
不建议在生产环境中使用
git clone https://github.com/runkit7/runkit7
cd runkit7
pecl install package.xml
这个问题主要出现在本地开发环境的php版本高于生产环境运行的php版本,或构建服务时构建环境的p hp版本高于运行环境的php版本。这时composer会引入一些版本过高的包。可以在composer.json中的config.platform中设置php版本。
{
"require": {
}
"config": {
"platform" :{
"php": "5.6",
"ext-grpc": "1.14",
"ext-protobuf": "3.5"
}
}
}
同时也可以写一下用到的一些扩展,这样在install的时候就不回去检查是否真的装了这些扩展