第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Composer autoload - 文件選項(xiàng)和 packagist

Composer autoload - 文件選項(xiàng)和 packagist

PHP
開滿天機(jī) 2023-03-04 18:09:00
我已經(jīng)開發(fā)了幾個(gè)作曲家模塊,并已成功發(fā)布給 packagist。所有這些都是完全基于類的,我知道自動(dòng)加載過程是如何工作的——如果多個(gè)項(xiàng)目使用我的 packagist 模塊,它們只會(huì)被包含一次。它對(duì)文件也一樣嗎?我想為“缺失的”WordPress 功能開發(fā)一個(gè) packagist 模塊——即我在所有項(xiàng)目中經(jīng)常使用的功能。如果多個(gè)項(xiàng)目包含該 packagist 模塊,我會(huì)收到有關(guān)同一名稱空間中同一函數(shù)的多個(gè)定義的錯(cuò)誤嗎?澄清。我正在創(chuàng)建一個(gè)作曲家模塊 sgi/wp-utils。它不會(huì)有課。它只會(huì)包含文件。像這樣{    "autoload": {        "files": [            "src/Assets/functions.php",            "src/Posts/functions.php"         ]    }}它將用于定義我計(jì)劃在許多項(xiàng)目(插件、主題)中使用的實(shí)用程序功能。如果多個(gè)插件/主題使用同一個(gè)包,作曲家每次 WP 安裝只加載一次文件,還是我需要用調(diào)用包裝函數(shù)function_exists()?
查看完整描述

1 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

如果同一個(gè) composer 項(xiàng)目中的多個(gè)包需要同一個(gè)包,依賴將被解決并且包將只包含一次,并且文件在 keyfiles中composer.json:


{

    "autoload": {

        "files": ["src/MyLibrary/functions.php"]

    }

}

無論如何都不會(huì)被多次包含在內(nèi)。這不是真正的“自動(dòng)加載”,因?yàn)樵?PHP 中實(shí)際上沒有自動(dòng)加載“功能”,只是這些文件將在每個(gè)需要主腳本的請(qǐng)求中“包含” autoload.php。


由于您提到了 Wordpress,在那個(gè)世界中事情會(huì)變得更加棘手,因?yàn)槎鄠€(gè)插件將是單獨(dú)的 Composer 項(xiàng)目,每個(gè)插件都有自己聲明的依賴項(xiàng),這些依賴項(xiàng)將被并行加載。


如果多個(gè)插件聲明了自己的composer.json文件,并且它們使用相同的包,它們將嘗試加載相同文件的多個(gè)副本,并再次定義相同的類和函數(shù)。這可能會(huì)導(dǎo)致與類名和函數(shù)名的沖突。


即使自動(dòng)加載器使用類似的東西include_once(它沒有),它也不會(huì)工作。因?yàn)槊總€(gè)插件都有自己的包副本,并且會(huì)包含不同的文件。


您可以采取一些基本的預(yù)防措施,例如將您的函數(shù)聲明包裝在if (!function_exists('my_function') { }. 就像是:


<?php


if (function_exists('foo')) {

    return;

}


function foo() {

   echo "foo";

}

以避免在嘗試定義已定義的函數(shù)時(shí)出現(xiàn)致命錯(cuò)誤)。


這將避免嘗試兩次定義相同的函數(shù),但如果多個(gè)插件依賴于同一包的不同且不兼容的版本,您也可能會(huì)遇到麻煩。


Wordpress 和 Composer 根本不是很好的伙伴,因?yàn)?Wordpess 很難適應(yīng)現(xiàn)代方式來管理更廣泛的 PHP 生態(tài)系統(tǒng)中的依賴關(guān)系。


查看完整回答
反對(duì) 回復(fù) 2023-03-04
  • 1 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)