在多个文件中,如果它们都是同一命名空间的一部分,则是必需的require/include


Is require/include, in multiple files, necessary if they are all part of the same namespace?

我对php中的命名空间概念是全新的。

情况:一个文件夹中有多个文件,它们都需要/包含彼此以达到各自的目的。

如果我把它们都放在同一个命名空间中,是否还有必要让它们相互要求/包括?

我确实想过用"use"替换require/include,但在名称空间foo''bar中有一个文件实际上"use"foo''bar似乎很奇怪。。。o_o

PS:我通过提问来覆盖我的所有基础,同时也在网上搜索答案;因此,如果你有任何好的信息/教程等来源,请随时分享。:D

谢谢,David

它可能会因为所有包含/要求而变得一团糟。一个包含文件上的包含文件也将包含在第一个文件上,out显式调用它。我建议,如果你使用OOP方法,从__autoload()魔术方法开始。当你在一个页面上包含了一个文件,而这个文件已经包含在该页面上运行的其他地方,并且因此导致500服务器错误时,这将为你省去很多麻烦

是的,您必须需要它们,或者您可以使用psr-0兼容的自动加载器

如果我把它们都放在同一个命名空间中,是否还有必要让它们相互要求/包括?

例如,您可以创建一个加载器类(这是我一直在做的事情,所以您只需要包含/要求它们一次,并且您只需要在控制器中包含/要求加载器类)。这是我目前使用的

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
//include alle classes
include("classes/db.class.php");
include("classes/gastenboek.class.php");
include("classes/gebruiker.class.php");
include("classes/bericht.class.php");
session_start();
$db = new Db();
//require smarty (smarty template engine)
require('plugins/smarty/Smarty.class.php');
$smarty = new Smarty;
$smarty->setCompileDir('smarty_compile');
$smarty->setTemplateDir('templates');
//func to dump var
function dump($var)
{
    //echo ##
    echo '<pre>##';
    //print var
    print_r($var);
    //echo ##
    echo '##</pre>';
}

db.class就是这样的例子:

<?php
class Db
{
    //Loading Db
    public function __construct()
    {
        //do connect()
        $this->connect();
    }
    //connecting and selecting db
    private function connect()
    {
        $connection = mysql_connect('localhost', 'user', 'pw');
        if(!$connection)
        {
            die("Kan geen verbinding maken: " . mysql_error());
        }
        mysql_select_db("db", $connection);
    }
    public function DBH()
    {
        try 
        {
            $DBH = new PDO('mysql:host=localhost;dbname=dbname', 'user', 'pw');
            $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $DBH;
        }
        catch (PDOException $except)
        {
            echo $except->getMessage();
        }
    }

index.php只需要这个:

include("includes/loader.php");