【发布时间】:2019-08-22 15:18:02
【问题描述】:
我正在尝试在原生 php 中构建一个子 api。 我创建了一个带有类的结构,现在我尝试在常规 php 文件中使用这些类,该文件将使用 http 客户端从外部调用。
问题是我无法从这些类中实例化新对象,当我做的一切都停止并且我无法继续执行我的文件时。
user.php:
use Actions\Users\UserMethods;
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
try{
$Methods = new UserMethods();
if($_GET["id"]!==null){
$user = $Methods->getUser($_GET["id"]);
var_dump($user);
echo json_encode(['user'=>$user]);
}
}catch (Exception $exception){
returnError($exception->getMessage());
}
}
我可以在分配 $Methods 之前对任何内容进行 vardump,但在我分配之后没有任何效果。
UserMethods 类:
namespace Actions\Users;
use Models\UserModel;
use database\dbconnect;
use Constants\DbConfig;
class UserMethods
{
private $DataBase;
private $userValidator;
/**
* UserMethods constructor.
*/
public function __construct()
{
try{
$this->userValidator = new UserValidator();
$this->DataBase = new dbconnect(DbConfig::$BD_HOST.":".DbConfig::$DB_PORT,
DbConfig::$DB_USERNAME,DbConfig::$DB_PASSWORD,DbConfig::$DB_DBNAME);
}catch(\Exception $exception){
var_dump($exception);
}
}
public function createUser(UserModel $userModel){
try{
$this->userValidator->validate($userModel);
$name=$userModel->getName();
$email= $userModel->getEmail();
$sqlQuery="Insert into users(email,name) values ($$email,$$name)";
return $this->handleQuery($sqlQuery);
}catch(\Exception $exception){
throw $exception;
}
}
public function updateUser(UserModel $userModel){
try{
$this->userValidator->validate($userModel);
$name=$userModel->getName();
$email= $userModel->getEmail();
$id=$userModel->getId();
$sqlQuery="
UPDATE users
SET
name = $$name,
email = $$email,
...
WHERE
id=$$id;
";
return $this->handleQuery($sqlQuery);
}catch(\Exception $exception){
throw $exception;
}
}
public function deleteUser($id){
try{
$sqlQuery="
DELETE FROM users
WHERE
id=$$id;
";
return $this->handleQuery($sqlQuery);
}catch(\Exception $exception){
throw $exception;
}
}
public function getUser($id){
try{
$sqlQuery="
SELECT id,name,email
FROM users
WHERE id=$$id
ORDER BY id ASC
";
return $this->handleQuery($sqlQuery);
}catch(\Exception $exception){
throw $exception;
}
}
public function getAllUsers(){
$sqlQuery="
SELECT id,name,email
FROM users
ORDER BY id ASC
";
return $this->handleQuery($sqlQuery);
}
private function handleQuery($query){
$MysqlDb = $this->DataBase->connect();
return $MysqlDb->query($query);
}
}
可能是什么问题?
【问题讨论】:
-
我猜你包含的文件有语法错误。
-
开发时请配置error reporting。
-
spl_autoload_register()有很大帮助