PHP命名空间与子文件夹有关
我有一个非常简单的web应用程序。学习如何使用名称空间 目录的结构是:PHP命名空间与子文件夹有关,php,Php,我有一个非常简单的web应用程序。学习如何使用名称空间 目录的结构是: www(root) 类(应用程序目录) index.php 付款(命名空间的子目录) php(单独的类、命名空间) 游戏性(命名空间的子目录) php(单独的类, 名称空间) 代码如下: index.php <?php function my_autoload_function($c) { require_once "class/".str_replace("\\"
- www(root)
- 类(应用程序目录)
- index.php
- 付款(命名空间的子目录)
- php(单独的类、命名空间)
- 游戏性(命名空间的子目录)
- php(单独的类, 名称空间)
- 类(应用程序目录)
<?php
function my_autoload_function($c)
{
require_once "class/".str_replace("\\","/",$c).".php";
}
spl_autoload_register('my_autoload_function');
$gpcard=new \gameplay\card;
$gpcard->play();
?>
如果将index.php文件移到更高的目录级别,它将正常工作。
它应该在/www目录中,而不是在/class中,因为它在路径中添加了“class”。
如果你需要它,你需要
require_once str_replace("\\","/",$c).".php";
您可以在此处看到它如何在小型框架上工作:
并在此处自动加载:
classes/Folder1/Folder2/ClassName.php
// index.php
require_once($_SERVER['DOCUMENT_ROOT'].'/classes/autoload.php');
use Folder1\Folder2\ClassName;
ClassName cl = new ClassName();
// Class file path classes\Folder1\Folder2\ClassName.php
namespace Folder1\Folder2;
class ClassName{
// Do something...methods...variables ...
}
类似这样的事情我要小心的一件事是与名称/文件名的情况保持一致。Windows可以,但*nix对文件名区分大小写。所以请确保你们总是用卡片作为班级和文件名。我根据你们的建议做了两处更正,但仍然不起作用。这是Windows10
require_once str_replace("\\","/",$c).".php";
// index.php
require_once($_SERVER['DOCUMENT_ROOT'].'/classes/autoload.php');
use Folder1\Folder2\ClassName;
ClassName cl = new ClassName();
// Class file path classes\Folder1\Folder2\ClassName.php
namespace Folder1\Folder2;
class ClassName{
// Do something...methods...variables ...
}