Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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 - Fatal编程技术网

PHP命名空间与子文件夹有关

PHP命名空间与子文件夹有关,php,Php,我有一个非常简单的web应用程序。学习如何使用名称空间 目录的结构是: www(root) 类(应用程序目录) index.php 付款(命名空间的子目录) php(单独的类、命名空间) 游戏性(命名空间的子目录) php(单独的类, 名称空间) 代码如下: index.php <?php function my_autoload_function($c) { require_once "class/".str_replace("\\"

我有一个非常简单的web应用程序。学习如何使用名称空间

目录的结构是:

  • www(root)
    • 类(应用程序目录)
      • index.php
      • 付款(命名空间的子目录)
        • php(单独的类、命名空间)
      • 游戏性(命名空间的子目录)
        • php(单独的类, 名称空间)
代码如下:

index.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 ...
}