作曲家给出错误,"Class Not Found"
Composer Gives Error, "Class Not Found"
我正在使用 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/"
}
}
}
run.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';
}
}
parentclass.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
我收到这个错误:
Fatal error: Class 'myns\childclass' not found in C:\wamp...\run.php on line 7
在 composer.json
中,您定义了 src
文件夹,您使用 myns
命名空间,因此在 childclass.php
中,您应该使用
namespace myns;
也不必加:
require_once 'parentclass.php';
或
use myns\parentclass as parentclass;
所以你的 childclass.php 应该是这样的:
<?php
namespace myns;
class childclass extends parentclass
{
public function abc()
{
echo 'hello world';
}
}
此外,在 run.php
文件中,您可以替换:
use myns\childclass as childclass;
进入
use myns\childclass;
如果您不想为 class 使用其他名称,则不需要使用 as
。
您还应该考虑使用带有大写字母(Studly 大写)的名称空间,classes 也是如此。使用 MyNs
而不是 myns
,使用 ParentClass
而不是 parentclass
。您应该查看 PSR-1 coding standard and PSR-2 coding standard 以遵循最佳编码实践。
我正在使用 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/"
}
}
}
run.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';
}
}
parentclass.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
我收到这个错误:
Fatal error: Class 'myns\childclass' not found in C:\wamp...\run.php on line 7
在 composer.json
中,您定义了 src
文件夹,您使用 myns
命名空间,因此在 childclass.php
中,您应该使用
namespace myns;
也不必加:
require_once 'parentclass.php';
或
use myns\parentclass as parentclass;
所以你的 childclass.php 应该是这样的:
<?php
namespace myns;
class childclass extends parentclass
{
public function abc()
{
echo 'hello world';
}
}
此外,在 run.php
文件中,您可以替换:
use myns\childclass as childclass;
进入
use myns\childclass;
如果您不想为 class 使用其他名称,则不需要使用 as
。
您还应该考虑使用带有大写字母(Studly 大写)的名称空间,classes 也是如此。使用 MyNs
而不是 myns
,使用 ParentClass
而不是 parentclass
。您应该查看 PSR-1 coding standard and PSR-2 coding standard 以遵循最佳编码实践。