使用 symfony/polyfill-intl-idn 後發現有趣的事,不用特別去檢查 PHP extension 的 function 是否存在,只要 require symfony polyfill 以後,完全不需要進行任何設定就可以正常運作。
後來在 composer.json 看到 autoload 的寫法:
{ "autoload": { "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" }, "files": [ "bootstrap.php" ] }, }
以前以為 autoload 只能挑其中一種方法使用,沒想到可以指定多種方法同時使用。
上面的設定方式,namespace 會在 class 使用時才 require 進來,而 bootstrap.php
則是在一開始就 require 並執行,polyfill 就在當下偵測並處理掉 extension functions。所以使用者 composer require
以後程式並不需要做任何修改。