如何在 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_oncerequire 相同,只是 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 一次以进行类导入的主要内容,如果未能解决你的问题,请参考以下文章

PHP/xdebug profiler require_once 性能不佳

如何使用护照 js 在 req.body 中添加用户?

如何在中间件中访问 (req , res)?

req.body在帖子上空了

PHP文件包含漏洞

快速会话中的 req.session 不持久