文件目录:
index.php
lib/
DB.php
Suan.php
代码:
index.php:
<?php
define('PATH', realpath(dirname(__FILE__)));
spl_autoload_register(function ($class_name) {
require_once PATH . '/lib/' .$class_name . '.php';
});
echo Suan::sum(1,2);
echo PHP_EOL;
?>
lib/DB.php:
<?php
class DB
{
function __construct()
{}
public function conn(){
echo __METHOD__;
}
}
?>
lib/Suan.php:
<?php
class Suan
{
protected function __construct()
{}
public static function sum($a, $b){
return $a + $b;
}
public static function db(){
return (new DB())->conn();
}
}
?>
执行:php -dvld.active=1 index.php
查看opcode发现并不加载DB.php文件
加载了的Suan.php全部编译,但只执行sum方法
PHP的按需加载特性,所以好的架构可以减少不必要的加载文件,从而减少编译的代码:
思考总结:1、对于web请求,很多架构代码,一个文件一个controller包含多个action多个请求的业务逻辑,这无疑是增加了编译代码量。
2、架构可以增加比较薄的一层,减少代码文件的加载和编译
有疑问加站长微信联系(非本文作者))