【发布时间】:2012-02-06 13:09:05
【问题描述】:
我一直在尝试学习 PHP 中的类,并且我学习过程的一部分一直在研究各种库和那里的东西。当然,我还有很多问题,这里就是其中之一。
当查看一些库时,您调用该库的主文件,它们通过直接按名称调用它们来调用每个库文件,例如 PHP 图表库就是这样做的:
<?php
require_once 'model/ChartConfig.php';
require_once 'model/Point.php';
require_once 'model/DataSet.php';
require_once 'model/XYDataSet.php';
require_once 'model/XYSeriesDataSet.php';
require_once 'view/primitive/Padding.php';
require_once 'view/primitive/Rectangle.php';
require_once 'view/primitive/Primitive.php';
require_once 'view/text/Text.php';
require_once 'view/color/Color.php';
require_once 'view/color/ColorSet.php';
require_once 'view/color/Palette.php';
require_once 'view/axis/Bound.php';
require_once 'view/axis/Axis.php';
require_once 'view/plot/Plot.php';
require_once 'view/caption/Caption.php';
require_once 'view/chart/Chart.php';
require_once 'view/chart/BarChart.php';
require_once 'view/chart/VerticalBarChart.php';
require_once 'view/chart/HorizontalBarChart.php';
require_once 'view/chart/LineChart.php';
require_once 'view/chart/PieChart.php';
?>
但是,我查看了另一个库,他们只是通过使用这样的 PHP 自动加载方法调用目录中的每个文件来自动化该过程(来自 php 手册):
function __autoload($name) {
echo "Want to load $name.\n";
throw new Exception("Unable to load $name.");
}
我只是想知道以自动加载方式执行此操作是否有任何优点或缺点?
【问题讨论】:
-
我认为除了干净的代码之外,加载的类会更少。
autoload仅在类名无法解析的情况下有效,如果尚未加载,它将自动加载类文件,并且只会在使用时加载类。