экспертов PHP!Я пытаюсь сделать мой код более модульным в соответствии с способами PHP (используя 7.0), и это мой первый эксперимент по созданию моей собственной комбинации пространства имен + пакет для композитора + репозиторий git.
Моя папка пакета:
packagedir
|__src
| |__myfunc.php
|__composer.json
myfunc.php:
namespace MyNS\MySubNS;
function myfunc() { return 1; }
packagedir / composer.json:
{
"name": "myns/mysubns",
...
"autoload": {
"psr-4": { "MyNS\\MySubNS\\": "src" }
}
}
Все проверено в хранилище packagedir/.git.
Myкаталог проекта после установки composer:
public_html
|__vendor
| |__composer
| | |__ [all the usual autoload_* stuff, etc.]
| |__myns
| | |__mysubns
| | |__src
| | | |__myfunc.php
| | |__composer.json
| |__autoload.php
|__composer.json
|__composer.lock
|__index.php
public_html / composer.json:
{
"require": {
"myns/mysubns": "dev-master"
},
"repositories": [
{ "type": "git",
"url": "file:///path/to/packagedir/.git" }
]
}
index.php:
ini_set('display_errors','1');
require_once 'vendor/autoload.php';
echo \MyNS\MySubNS\myfunc();
Похоже, что composer установил пакетв vendor
, а autoload_ps4.php
включает в себя:
return array(
'MyNS\\MySubNS\\' => array($vendorDir . '/myns/mysubns/src'),
);
Но я получаю:
( ! ) Fatal error: Uncaught Error: Call to undefined function MyNS\MySubNS\myfunc() in /var/www/public_html/index.php on line 3
( ! ) Error: Call to undefined function MyNS\MySubNS\myfunc() in /var/www/public_html/index.php on line 3
Может кто-нибудь увидеть, что я делаю не так (кроме совета, который .gitрепозитории не рекомендуется использовать в качестве места для получения пакетов)?