我刚刚弄清楚了如何安装和使用PHP作曲家,并将其用于将PHP-SQL-Query-ubuerder安装到我的项目中。该系统创建了供应商文件夹等。但是,我在软件包中使用类遇到问题。它给我以下错误,关于如何解决此问题的任何建议?
Fatal error: Uncaught Error: Class 'NilPortuguesSqlQueryBuilderBuilderGenericBuilder' not found in D:DocumentsCadetPortalphpliblogin.class.php on line 15
login.class.php
require_once ("core.class.php");
require_once ("../../vendor/autoload.php");
use NilPortuguesSqlQueryBuilderBuilderGenericBuilder;
class LoginSystem {
private $core;
private $builder;
private $config;
function __construct(){
$this->core = new coreFunctions();
$this->builder = new GenericBuilder();
$this->config = require('core.config.php');
}
//....
}
编辑
fncregister.php
require_once "../../vendor/autoload.php";
$LoginManager = new ThomasSmythLoginSystem();
echo $LoginManager->Register($_POST["StrSurname"], $_POST["StrForename"], $_POST["StrEmail"], $_POST["StrPassword"], $_POST["DteDoB"], $_POST["StrGender"], $_POST["StrToken"]);
composer.json
{
"require": {
"nilportugues/sql-query-builder": "^1.5"
},
"autoload": {
"psr-4": {
"ThomasSmyth\": "php/lib/"
}
}
}
您的类源文件不应在其中完全没有任何require_once
语句。按照PSR-4规格进行命名。将您的课程放在命名空间中,以避免与您可能通过作曲家包含的其他类碰撞。然后将一个类放入一个文件中,名为与类相同的文件。例如,登录系统类应在名为loginsystem.php。
namespace MyNamespace;
class LoginSystem
{
...
}
然后将composer.json
设置为将您的命名空间指向您的源目录:
"autoload": {
"psr-4": {
"MyNamespace\": "src/"
}
},
现在,您的主要应用调用器或前控制器应该是唯一包括自动加载器的地方:
require_once 'vendor/autoload.php';
$login = new MyNamespaceLoginSystem();
...