PHP后续需要的文件是否可以访问以前的要求?
如果我PHP后续需要的文件是否可以访问以前的要求?,php,class,require,mailgun,Php,Class,Require,Mailgun,如果我需要一个文件,比如一个Composer自动加载脚本,我随后需要的文件能否访问该文件的“内容”? 我以前从来没有遇到过这样的问题,但我似乎遇到了麻烦 正在加载脚本: //load required class files require "../server/frameworks/vendor/autoload.php"; //alias use Mailgun\Mailgun; //get config require "../server/sitetools/config.php";
需要
一个文件,比如一个Composer自动加载脚本,我随后需要的文件能否访问该文件的“内容”?
我以前从来没有遇到过这样的问题,但我似乎遇到了麻烦
正在加载脚本:
//load required class files
require "../server/frameworks/vendor/autoload.php";
//alias
use Mailgun\Mailgun;
//get config
require "../server/sitetools/config.php";
config.php
class sitetools{
function __construct(){
//Instantiate Mailgun
$this->mg = new Mailgun("API_KEY");
$this->domain = "domail.tld";
}
}
use Mailgun\Mailgun;
class sitetools {
function __construct(){
//Instantiate Mailgun
$this->mg = new Mailgun("API_KEY");
$this->domain = "domail.tld";
}
}
然后,当我尝试实例化我的sitetools
类时,我从该类中得到一个错误:未找到类'Mailgun\Mailgun'。您需要将名称空间添加到config.php,而不是加载脚本(如果您没有在那里使用它…)
config.php
class sitetools{
function __construct(){
//Instantiate Mailgun
$this->mg = new Mailgun("API_KEY");
$this->domain = "domail.tld";
}
}
use Mailgun\Mailgun;
class sitetools {
function __construct(){
//Instantiate Mailgun
$this->mg = new Mailgun("API_KEY");
$this->domain = "domail.tld";
}
}
通过为脚本和类使用相同的文件名,您应该能够为自己的类使用composer autoloader(它可能需要更多的配置…。您需要将名称空间添加到config.php
,而不是加载脚本(如果您没有在那里使用它…)。但它肯定应该“传输”?否,这可能导致冲突。例如,如果多个包有一个名为Log
的类,并且您将在加载脚本文件中包含所有名称空间。顺便说一下,您可以让自己的类也使用composer autoloader,那么您也不必包含这些类。不过,你需要使用它的命名约定。啊,我明白了,这是有道理的!我也会调查的。你介意提交一个答案吗?