提问人:mrJQuery 提问时间:7/24/2020 最后编辑:DharmanmrJQuery 更新时间:7/25/2020 访问量:1356
在 PHP 7.4 中使用命名空间和自动加载器
Using Namespaces and autoloader in PHP 7.4
问:
我对命名空间如何与自动加载一起工作有点困惑。我目前正在尝试学习 PHP 7.4,我想学习如何为类使用命名空间和自动加载器。
我正在使用 MAMP 在 Mac OS 上工作。
这是我收到的错误消息:
警告:include_once(classes/Person/Person.class.php):无法打开流:第 4 行的 /Applications/MAMP/htdocs/includes/autoloader.inc.php 中没有此类文件或目录
我的文件结构是这样的:
- classes
- Person
- Person.class.php
- includes
- autoloader.inc.php
- index.php
索引 .php:
<?php
include 'includes/autoloader.inc.php';
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<?php
$person = new \classes\Person\Person('Andre', 24, 'blue');
echo $person->getName();
?>
</body>
</html>
autoloader.inc.php:
<?php
spl_autoload_register(function($className) {
include_once str_replace("\\", "/", $className) . '.class.php';
});
人.class.php
<?php
namespace classes\Person;
class Person {
private $name;
private $age;
private $eyeColor;
public function __construct($name, $age, $eyeColor) {
$this->name = $name;
$this->age = $age;
$this->eyeColor = $eyeColor;
}
}
我真的不明白为什么它不起作用。我遵循了很多教程,但没有任何效果。也许它与PHP中的配置有关?
答: 暂无答案
评论
include_once '/classes/Person/Person.class.php'
include_once '/classes/Person/Person.class.php'
include_once 'localhost:8888/classes/Person/Person.class.php'
include_once dirname(__DIR__) . '/'. str_replace("\\", "/", $className) . '.class.php';