簡體   English   中英

如何從使用來自不同命名空間的 class 的命令行執行 php 文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM