【发布时间】:2016-01-22 05:03:16
【问题描述】:
我使用的是 Windows 10。在根目录中创建了一个文件夹 src 后,我在其中创建了两个文件。
目录结构(运行composer install之前):
│
├── composer.json
├── run.php
│
└── src
├── childclass.php
└── parentclass.php
根目录下的两个文件:
composer.json:
{
"name": "myvendor/mypackage",
"description": "nothing",
"authors": [
{
"name": "Omar Tariq",
"email": "XXXXX@gmail.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"myns\\": "src/"
}
}
}
运行.php:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use myns\childclass as childclass;
$childclass = new childclass();
$childclass->abc();
src文件夹中的两个文件:
childclass.php:
<?php
require_once 'parentclass.php';
use myns\parentclass as parentclass;
class childclass extends parentclass
{
public function abc()
{
echo 'hello world';
}
}
父类.php:
<?php
namespace myns;
abstract class parentclass
{
abstract public function abc();
}
运行后的目录结构composer install:
│
├── composer.json
├── run.php
│
├── src
│ ├── childclass.php
│ └── parentclass.php
│
└── vendor
├── autoload.php
│
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── ClassLoader.php
├── installed.json
└── LICENSE
现在,当我跑步时:
php run.php
我收到此错误:
致命错误:第 7 行的 C:\wamp...\run.php 中找不到类 'myns\childclass'
【问题讨论】:
-
可能是因为您的子班缺少
namespace myns;? -
@BrianGlaz 还说:您根本不需要在您的子类中使用 require_once - 这就是自动加载器的用途。
-
@BrianGlaz 是的,没错。它解决了我的问题。感谢您的快速回复:-)
-
@ccKep 太好了。我真的不知道。
标签: php namespaces composer-php autoloader psr-4