Rya*_*iss 11 php namespaces autoload composer-php
我有文件夹结构,如:
includes/
libraries/
Classes/
Contact/
Contact.php
ContactController.php
admin/
controllers/
contact/
edit.php
Run Code Online (Sandbox Code Playgroud)
Contact.php是我正在尝试使用的文件类.该文件包含.
<?php
namespace Classes;
class Contact {
function __construct() {
die('here');
}
}
Run Code Online (Sandbox Code Playgroud)
我有我的composer.json文件,如:
{
"autoload": {
"psr-4": {
"Classes\\": "includes/libraries/Classes/"
}
},
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Contact类edit.php的admin/controllers/contact/文件位于该文件夹中.我的edit.php文件是这样的:
<?php
use Classes\Contact;
$contact = new Contact();
var_dump($contact);
Run Code Online (Sandbox Code Playgroud)
这个文件包含了vendor/autoload.php文件,但我似乎无法使用该类?
Rus*_*nov 12
Classes/Contact/Contact.php而作曲家规则"Classes\\": "includes/libraries/Classes/"意味着Classes\Contact\Contact阶级,而不是Classes\Contact.
因此,如果您真的想要Classes\Contact类,请将Classes/Contact/Contact.php文件移动到父目录:Classes/Contact.php.
但是,如果该类的所需命名空间路径是Classes\Contact\Contact,则更改use:
use Classes\Contact\Contact;
Run Code Online (Sandbox Code Playgroud)
而且namespace:
namespace Classes\Contact;
class Contact {}
Run Code Online (Sandbox Code Playgroud)
??? composer.json
??? includes
? ??? libraries
? ??? Classes
? ??? Contact
? ??? Contact.php
??? test.php
??? vendor
??? autoload.php
??? composer
??? autoload_classmap.php
??? autoload_namespaces.php
??? autoload_psr4.php
??? autoload_real.php
??? autoload_static.php
??? ClassLoader.php
??? installed.json
??? LICENSE
Run Code Online (Sandbox Code Playgroud)
下面的文件vendor/由作曲家生成.
composer.json
{
"name": "testpsr4",
"autoload": {
"psr-4": {
"Classes\\": "includes/libraries/Classes"
}
}
}
Run Code Online (Sandbox Code Playgroud)
test.php的
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Classes\Contact\Contact;
$c = new Contact;
$c->test();
Run Code Online (Sandbox Code Playgroud)
包括/库/班/联系人/ Contact.php
<?php
namespace Classes\Contact;
class Contact {
public function test () {
echo __METHOD__, PHP_EOL;
}
}
Run Code Online (Sandbox Code Playgroud)
测试
composer update
php test.php
Run Code Online (Sandbox Code Playgroud)
产量
Classes\Contact\Contact::test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22927 次 |
| 最近记录: |