PHP,如何设置包含路径
我已经写:PHP,如何设置包含路径
include('a.php')
include('b.php')
等在我的脚本包括使用功能a()
和b()
。它变得非常乏味。有没有办法设置一个目录的路径,并有脚本可以访问多个文件?
-
我在剧本试过这样:
set_include_path('.;C:\xampp\htdocs\myfunctionfolder');
我设置环境变量PATH有在那里这位前辈。
-
我也是在修改php.ini中包括
include_path = ".;\xampp\php\PEAR;\xampp\htdocs\myfunctionfolder"
如果我在那里有很多文件,我该如何访问这些文件,而不必每到设有独立?设置环境变量绝对可以在命令提示符下工作。
我是否需要为.php文件做一些其他操作,以便在一个目录下共同访问?
通常的做法是使用包含include
/include_once
调用(为了简单起见)的“common.php”或“includes.php”文件。例如
- 根
- [LIB]
- a.php只会
- b.php
- includes.php
- 的index.php
然后包括.PHP包含:
<?php
include_once('a.php');
include_once('b.php');
?>
然后在任何脚本它包括includes.php
文件的问题。
但是,要回答你原来的问题,你一次只能包含一个文件,每次调用。您可以使用类似opendir
和readdir
的东西来遍历特定目录中的所有文件,并将它们包含为发现(自动说话)或根据您创建的文件写出每个文件。
此外,所有设置包含路径都会设置一个目录,以便在拨打include
时进行查找。这不是一个文件应该自动加载的目录(这是我从你的文章中得到的印象)。
PHP的解析器非常高效 - 你会浪费更多的时间来加载大量的单个文件,而不是一个(或几个)更多的单片文件。然而,如果你坚持把事情隔离开来,你可以创建meta-include文件来加载单个文件集,所以你只需要包含一个meta-include文件,它就可以为你完成剩下的工作:
meta.php:
include('a.php');
include('p.php');
...
include('z.php');
然后你只需要做:
<?php
include('meta.php');
在脚本中,你已经得到了所有加载您个人的。
没有人认为在某些情况下,包括必须加载在不同的部分......例如,如果包含页面布局的页眉,边栏和页脚,则不能连续包含它们。 – andreszs
我有这样的功能在我的大多数项目:
function appendToIncludePath($path)
{
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . BASE_DIR . $path . DIRECTORY_SEPARATOR);
}
设置include_path
将不包括在该目录中的所有文件,它只会增加该目录的列表,包括文件时,PHP将搜索。
指定require(),include(),fopen(),file(),readfile()和file_get_contents()函数查找文件的目录列表。
这将简化包括在深结构或在文件系统中的一个完全不同的部分文件。
include('/var/somewhere/else/foo.php');
随着/var/somewhere/else/
加入到php.ini中的include_path可能成为
include('foo.php');
此外,正如其他人所指出的,也有共同的做法,但你可以看看OOPHP和autoloading classes。这对我所知道的功能不起作用。
许多编写面向对象应用程序的开发人员创建一个PHP源文件的每类定义。最大的烦恼之一是必须在每个脚本的开头(每个类一个)写一个需要包含的长列表。
在PHP 5中,这不再需要。您可以定义一个__autoload函数,在您尝试使用尚未定义的类/接口的情况下自动调用该函数。通过调用这个函数,脚本引擎有最后一次机会在PHP失败并且出现错误之前加载类。
看到了这个问题:
How to include() all PHP files from a directory?
此外,在最佳实践方面,您可以在同一文件的多个功能,如果他们是有联系的,而且我也建议有更多的您的函数和文件的描述性名称。例如,如果您的a()和b()函数都与验证相关,例如,将您的文件命名为validation.php,并将两个函数都放在那里,并尝试将它们重命名为与他们所做的相关的事情。这会让你记住他们在开始堆积一大堆功能时所做的事情;)
Hphph !!现在我清楚了。感谢您向我展示常见的方式。我仍然试图弄清楚PHP中的“传统”。 – musicliftsme
如果这是您自己的个人项目,“常规”是任何方式适合您的方式。当你不得不开始使用查找功能或写下文件名和注释时,你会忽略“常规”。 ;-) –
如果我包含加载一堆.php文件(比如20行到50行的函数)的“include.php”,我可能需要也可能不需要,这会在运行脚本时施加某种不必要的负载包括这些?我想知道是否应该自定义我的include.php,或者只是将1包括我所有的功能。 – musicliftsme