如何在 PHP 中组织 require 和 require 一次以进行类导入
Posted
技术标签:
【中文标题】如何在 PHP 中组织 require 和 require 一次以进行类导入【英文标题】:How to organize require and require once in PHP for class import 【发布时间】:2015-01-31 23:56:29 【问题描述】:我已经建立了一个 php 视频上传库,旨在用于不同的框架。 ## HERE ##.
但我想让它优化,我不想包含或制作\
require 或 require_once 在类中调用,而且我希望配置类可用于我在运行时拥有的所有类...无需显式调用或要求一次。
我该怎么做,大多数 php 项目使用引导类/文件来做到这一点,请一些机构帮助我。
【问题讨论】:
【参考方案1】:我建议创建一个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
【讨论】:
【参考方案2】:您可以创建一个 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
顶部的文件中),因此之后的所有指令都将受益。您可以通过检查不同的目录来改进它(例如如果类名以“控制器”或“模型”开头,则将路径更改为相应的目录)
【讨论】:
谢谢,但我是否必须在我的 uplaod_test.php 文件中包含该文件,该文件曾经是我的初始点……而且我还有 /config、/model 和 /service 类 php 文件夹要加载class ...你能修改一下你的代码吗 您可以自己修改它:) 例如,您可以拥有一个路径数组,然后检查文件是否存在于每个路径中。我个人使用类似于 Kohana 的功能,您可以通过阅读此处的代码找到灵感github.com/kohana/core/blob/3.3/master/classes/Kohana/…以上是关于如何在 PHP 中组织 require 和 require 一次以进行类导入的主要内容,如果未能解决你的问题,请参考以下文章