簡體   English   中英

自動加載后的作曲家,自動加載和類調用

[英]Composer, autoloading & class calling after autoloading

我想知道,我目前正在嘗試更改編程風格,以便與作曲家及其軟件包系統一起使用(我的天哪,為什么我不早使用它?),但我想知道我正在嘗試遵循PSR-4標准進行工作。

並得到以下PHP文件

<?php

require_once(__DIR__ . '/vendor/autoload.php');

$class = new vendorname\packagename\classname;

$example = new vendorname\packagename\subpackage\classname2;

與作曲家和PSR-4標准一起使用是否是好的做法?

這些類所在的位置:

- /vendor
-- /vendorname
--- /packagename
--- /src
---- classname.php
---- /subpackage
----- classname2.php

我目前以為是,但是我只是想確保根據PSR-4標准:-)正確使用了它。

通常這是可行的方法,但是某些軟件包使用不同的名稱空間(就我所知,主要是需要舊有支持的軟件包)。 因此,在composer require該軟件包並將其安裝之后,應檢查文件以了解所使用的名稱空間。 但是,是的,您是對的,因為您的講話方式通常是這樣進行的。

通常,程序包的自述文件/網站上還提供了一些有關如何構造其對象的示例。

示例: 獨白記錄器包有一個文件/vendor/monolog/monolog/src/Monolog/Logger.php那就是在Monolog的命名空間,而不是在Monolog\\Monolog\\Src\\Monolog命名空間。 只需確保檢查一下即可,但是大多數情況下,軟件包維護者/所有者網站上的示例將告訴您如何使用軟件包。 在此示例中,Github上的自述文件告訴您如何使用該軟件包。

大多數軟件包都包含引用其名稱空間的自述文件。 您可以使用該名稱空間訪問類。 如果找不到,則可以從“ your_project_root / vendor / vendor_name / package_name / composer.json”中進行檢查。

"autoload": {
        "psr-4": {"Monolog\\": "src/Monolog"}
    },

對於此示例,“ Monolog”是名稱空間,這是遵循psr標准的最佳方法。

<?php

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));

// add records to the log
$log->warning('Foo');
$log->error('Bar');

您可以在https://www.php-fig.org/psr/中看到所有這些標准

另外,您可以檢查如何將此軟件包加載到位於以下位置的“ autoload_psr4.php”中

'your_project_root /供應商/作曲家/ autoload_psr4.php'

當您運行composer require, composer update or composer dump-autoload時,可以執行composer require, composer update or composer dump-autoload命令。 該文件將更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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