instanceofmethod_exists的用法區別。參考StackoverFlow

instanceof為保留關鍵字,用於檢查對象是否屬於某個類。如果對象是類的實例,則比較返回true,否則返回 false。通常我們理解為 類型運算符兩邊為對象或類進行比較,等同於===;所以,與CommonService的判斷比較也是可取的。

method_exists為內置函數,用於檢查對象或類是否具有指定的方法。通常我們理解為 對象或類中是否存在指定方法,返回值也為 truefalse

結論:倆者的比較維度不同。

比较项instanceofmethod_exists
性质关键保留字内置函数
用途检查对象是否属于某一个类检查对象或类是否具有指定的方法
返回truefalsetruefalse

instanceof不会告诉你传递的对象是否包含该方法,只告诉你它是那个方法的一个实例。

dyld[43914]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicui18n.71.dylib
Referenced from:/opt/homebrew/Cellar/php@7.3/7.3.33_3/bin/php
Reason: tried:

‘/opt/homebrew/opt/icu4c/lib/libicui18n.71.dylib’ (no such file),

‘/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/icu4c/lib/libicui18n.71.dylib’ (no such file),

‘/opt/homebrew/opt/icu4c/lib/libicui18n.71.dylib’ (no such file),

‘/usr/local/lib/libicui18n.71.dylib’ (no such file),

‘/usr/lib/libicui18n.71.dylib’ (no such file, not in dyld cache),

‘/opt/homebrew/Cellar/icu4c/72.1/lib/libicui18n.71.dylib’ (no such file),

‘/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/icu4c/72.1/lib/libicui18n.71.dylib’ (no such file),

‘/opt/homebrew/Cellar/icu4c/72.1/lib/libicui18n.71.dylib’ (no such file),

‘/usr/local/lib/libicui18n.71.dylib’ (no such file),

‘/usr/lib/libicui18n.71.dylib’ (no such file, not in dyld cache)