【发布时间】:2015-01-31 23:56:29
【问题描述】:
我已经建立了一个 PHP 视频上传库,旨在用于不同的框架。 ## HERE ##.
但我想让它优化,我不想包含或制作\
require 或 require_once 在类中调用,而且我希望配置类可用于我在运行时拥有的所有类...无需显式调用或要求一次。
我该怎么做,大多数 php 项目使用引导类/文件来做到这一点,请一些机构帮助我。
【问题讨论】:
标签: php require require-once
我已经建立了一个 PHP 视频上传库,旨在用于不同的框架。 ## HERE ##.
但我想让它优化,我不想包含或制作\
require 或 require_once 在类中调用,而且我希望配置类可用于我在运行时拥有的所有类...无需显式调用或要求一次。
我该怎么做,大多数 php 项目使用引导类/文件来做到这一点,请一些机构帮助我。
【问题讨论】:
标签: php require require-once
我建议创建一个auto_load.php 文件,该文件将包含需要包含的文件,然后您可以将此auto_load.php 包含到您的库的入口点文件/类中以加载所有库工作所需的文件。这和composer的工作原理是一样的,而且效率很高。
您可以查看加载类中的psr-4 标准。
http://www.php-fig.org/psr/psr-1/
require_once 与require 相同,只是 PHP 会检查文件是否已包含,如果已包含,则不再包含(要求)它,请参阅 http://php.net/manual/en/function.require-once.php
【讨论】:
您可以创建一个 autoload function 。这样您将只加载所需的库。
一个基本的自动加载函数如下所示:
define('PATH_LIBRARY', '/some/path/lib/');
function myautoload($class_name){
// you can do string manipulation to build the filename, for example
$filename = strtolower($class_name);
$filename = str_replace('_', '/', $filename);
$filename = ucwords($filename);
$filepath = PATH_LIBRARY.$filename.'.php';
if (file_exists($filepath))
{
require_once($path);
return true;
}
}
spl_autoload_register('myautoload');
编辑该代码必须添加在代码的开头(通常在包含在您的 index.php 顶部的文件中),因此之后的所有指令都将受益。您可以通过检查不同的目录来改进它(例如如果类名以“控制器”或“模型”开头,则将路径更改为相应的目录)
【讨论】: