【发布时间】:2017-07-20 15:57:56
【问题描述】:
如果我 require 一个文件,比如 Composer 自动加载脚本,我随后 require 的文件可以访问该文件的“内容”吗?
我以前从来没有遇到过这个问题,但我似乎碰到了一堵砖墙。
加载脚本:
//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";
}
}
然后,当我尝试实例化它时,我的 sitetools 类出现错误:Class 'Mailgun\Mailgun' not found
【问题讨论】:
-
你需要将命名空间添加到
config.php,而不是加载脚本(如果你不在那里使用它......)。 -
但它肯定应该“转移”吗?
-
不,这可能会导致冲突。例如,如果多个包有一个名为
Log的类,并且您将在加载脚本文件中包含所有命名空间。 -
顺便说一句,你也可以让你自己的类使用 composer 自动加载器,那么你也不必包含这些。不过,您需要使用它的命名约定。
-
啊,我明白了,这很有道理!我也会调查一下。您介意提交答案吗?