如何在PHP中使用名称空间和名称空间?
我在目录如何在PHP中使用名称空间和名称空间?,php,Php,我在目录Main中有文件index.php 在类Helper的Main中还有目录Helper 我试图在index.php中注入类Helpers\Helper,如下所示: <? namespace Program; use Helpers\Helper; class Index { public function __construct() { $class = new Helper(); } } 根据您的描述,您的目录结构应该类似于以
Main
中有文件index.php
在类Helper
的Main
中还有目录Helper
我试图在index.php
中注入类Helpers\Helper
,如下所示:
<?
namespace Program;
use Helpers\Helper;
class Index {
public function __construct()
{
$class = new Helper();
}
}
根据您的描述,您的目录结构应该类似于以下内容:
如果您按照PSR-4标准的规定执行,您的类定义可能与下面所示的类定义类似:
Index.php
<?php
// FILE-NAME: Index.php.
// LOCATED INSIDE THE "Main" DIRECTORY
// WHICH IS PRESUMED TO BE AT THE ROOT OF YOUR APP. DIRECTORY
namespace Main; //<== NOTICE Main HERE AS THE NAMESPACE...
use Main\Helpers\Helper; //<== IMPORT THE Helper CLASS FOR USE HERE
// IF YOU ARE NOT USING ANY AUTO-LOADING MECHANISM, YOU MAY HAVE TO
// MANUALLY IMPORT THE "Helper" CLASS USING EITHER include OR require
require_once __DIR__ . "/helpers/Helper.php";
class Index {
public function __construct(){
$class = new Helper();
}
}
<?php
// FILE NAME Helper.php.
// LOCATED INSIDE THE "Main/Helpers" DIRECTORY
namespace Main\Helpers; //<== NOTICE Main\Helpers HERE AS THE NAMESPACE...
class Helper {
public function __construct(){
// SOME INITIALISATION CODE
}
}
但它不起作用。具体如何?Phpstorms以红色突出显示此使用未定义的命名空间帮助程序我仍然收到错误:在索引中的中未找到类'Main\Helpers\Helper'
在名称空间之前,您必须找到一种方法,要么自动加载该类,要么使用require或include手动要求该类。。。。更新后的帖子反映了….@MisterPi就在:require\u once\uuu DIR\uuu。“/helpers/Helper.php”
在Index.php
文件的顶部。。。。就在名称空间声明之后…如果我做了require\u一次
我需要使用use
做什么?
<?php
// FILE NAME Helper.php.
// LOCATED INSIDE THE "Main/Helpers" DIRECTORY
namespace Main\Helpers; //<== NOTICE Main\Helpers HERE AS THE NAMESPACE...
class Helper {
public function __construct(){
// SOME INITIALISATION CODE
}
}