Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP后续需要的文件是否可以访问以前的要求?_Php_Class_Require_Mailgun - Fatal编程技术网

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,那么您也不必包含这些类。不过,你需要使用它的命名约定。啊,我明白了,这是有道理的!我也会调查的。你介意提交一个答案吗?