[英]How can I execute a php file from command line which uses class from different namespace?
我正在嘗試創建一個文件,您可以從命令行執行該文件以在數據庫中創建表。 The problem is, that file uses a class from a different namespace, so when I try to run php migrations.php
, I get Fatal error: Uncaught Error: Class "Core\Database\Database" not found in C:\Users\user\Desktop\app\migrations.php:6
。
我正在使用作曲家的自動加載器,並且我對其他文件沒有任何問題 - 只有當我嘗試從命令行執行提到的文件時才會發生這種情況。
我可以通過要求包含使用的 class 的文件來解決它,但是我在另一個文件中得到了同樣的錯誤,因為另一個文件也使用了來自不同命名空間的類。
migrations.php
<?php
use Core\Database\Database;
Database::query("CREATE TABLE real_estates(
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
city_id INT(11) NOT NULL,
area INT(11) NOT NULL,
price INT(11) NOT NULL,
description TEXT NOT NULL,
CONSTRAINT `fk_real_estate_city`
FOREIGN KEY (city_id) REFERENCES cities (id)
ON DELETE RESTRICT
ON UPDATE RESTRICT
)");
Database::query("CREATE TABLE cities(
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
)");
composer.json
{
"autoload": {
"classmap": [
"./"
]
},
"require": {
"ext-pdo": "*"
}
}
您需要手動require
作曲家的自動加載文件,這通常由您的 web 應用程序完成。
require_once pathOfComposerAutoloadFile.php
創建一個 autoload.php 並在此文件中包含所有必需的文件,例如....
include(__DIR__ . 'yourfile.php');
在您的 migration.php 文件中使用這個 autoload.php。 現在您可以從 url 或命令行運行 migration.php。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.