[英]“Call to undefined function” when calling a function in custom composer package
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.
安裝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存儲庫作為獲取軟件包的地方)?
PHP不會自動加載功能。 使用files
自動加載器 ,例如:
{
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}
}
或將它們封裝在一個類中並自動加載,例如:
namespace foo;
class Helper {
public static function foo() { ... }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.