【发布时间】:2019-09-28 15:22:38
【问题描述】:
我有一个非常简单的网络应用程序。学习如何使用命名空间。
目录结构是:
- www(根)
- 类(应用程序目录)
- index.php
- payment(命名空间的子目录)
- card.php(单独的类,命名空间)
- gameplay(命名空间的子目录)
- card.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();
?>
card.php(子文件夹支付)
<?php
namespace payment;
class Card
{
public function pay()
{
echo "Pay to play";
}
}
?>
card.php(子文件夹游戏)
<?php
namespace gameplay;
class Card
{
public function play()
{
echo "Play game";
}
}
?>
我得到的错误信息是:
警告:require_once(class/gameplay/card.php):打开流失败:第 4 行的 C:\wamp64\www\class\index.php 中没有这样的文件或目录 致命错误:require_once():无法在第 4 行的 C:\wamp64\www\class\index.php 中打开所需的 'class/gameplay/card.php' (include_path='.;C:\php\pear')
虽然所有文件和子文件夹(命名空间)都存在,但还是有问题。
有人可以帮忙吗?
【问题讨论】:
-
我要注意的一件事是与名称/文件名的大小写保持一致。 Windows 没问题,但 *nix 对文件名区分大小写。因此,请确保始终使用 Card 作为类名和文件名。
-
我根据您的建议进行了两次更正,但仍然无效。无论如何,这是 Windows 10
标签: php