PHP オブジェクトの新しいメソッドに関連する問題
PHP オブジェクト
に新しいメソッドを追加するという問題は、次のような非常に一般的な書き方です:
<br /><br />class MyClass<br />{<br /> funciton a(){<br /> echo 'a';<br /> }<br />}<br /><br /><br />class MyClassExted extends MyClass<br />{<br /> function b(){<br /> echo 'b';<br /> }<br />}<br /><br />$test = new MyClassExted();<br />$test->b();<br /><br /><br />
いくつかの理由から、次のように使用できることを願っています:
<br /><br />$test = new MyClass();<br />$test->b();<br /><br />
次のように「見えます」:
class MyClass
{
funciton a(){
echo 'a';
}
}
class MyClass extends MyClass
{
function b(){
echo 'b';
}
}<br /><br />$test = new MyClass();<br />$test->b();<br /><br />
しかし、これは間違っています。新しい拡張のクラス名は親とは異なる必要があります。それで、何が問題ですか?
クラスにメソッドを直接追加する方法はありますか?
-----解決策のアイデア----------------------
そのような方法はありません
MyClass クラス MyClassExted にメソッド b() を記述してみてはいかがでしょうか。MyClass を継承した後、MyClass のメソッド b() をオーバーライドできます
<br />class MyClass<br />{<br /> function a(){<br /> echo 'a';<br /> }<br /> function b(){<br /> echo 'MyClass b';<br /> }<br />}<br />class MyClassExtend extends MyClass<br />{<br /> function b(){<br /> echo 'MyClassExtend b';<br /> }<br />}<br /> <br />$MyClass = new MyClass();<br />$MyClass->b();//MyClass b<br /><br />$MyClassExtend = new MyClassExtend();<br />$MyClassExtend->b();//MyClassExtend b<br />
--- ---解決策----------------------
クラスのインターフェースを予約できます
class MyClass<br />{<br /> funciton a(){<br /> echo 'a';<br /> }<br /><br /> function __call($name, $param) {<br /> if(function_exists($name)) {<br /> return call_user_func_array($name, $param);<br /> }<br /> }<br />}<br /><br />function b() {<br /> echo $b;<br />}<br /><br />$test = new MyClass();<br />$test->b();<br />
------解決策のアイデア----------------------
<br />class MyClass<br />{<br /> function a(){<br /> echo 'a';<br /> }<br /><br /> function __call($name, $param){<br /> if($name=='b'){<br /> echo 'b';<br /> }<br /> }<br />}<br /><br />$obj = new MyClass();<br />$obj->b();<br />
- -----ソリューションのアイデア----------------------
拡張およびアップグレードされたバージョンを提供します
<br /><?php<br />class api_base<br />{<br /> function a(){<br /> echo 'a111';<br /> }<br /> function __call($name, $param) {<br /> static $methods = array();<br /> if(!method_exists($this, $name)){<br /> list($api, $fun) = explode('_',$name);<br /> empty($fun) && $fun = 'index';<br /> if(!isset($methods[$api])){<br /> include_once('class.api.'.$api.'.php');<br /> $method = 'api_'.$api;<br /> $methods[$api] = new $api();<br /> }<br /> if(!method_exists($methods[$api], $fun)){<br /> die('error');<br /> }<br /> call_user_func_array(array($methods[$api], $fun), $param);<br /> }<br /> }<br />}<br /> <br />$test = new api_base();<br />$test->b(1,2,3);<br />$test->b(4,5,6);<br /><br />$test->b_test(1,2,3);<br />$test->b_haha(4,5,6);<br />?><br />class.api.b.php:<br /><?php<br />class api_b extends api_base<br />{<br /> function index($a,$b,$c){<br /> echo "$a - $b - $c <br>";<br /> }<br /> function test($a,$b,$c){<br /> echo "$a - $b - $c <br>";<br /> }<br /> function haha($a,$b,$c){<br /> echo "$a - $b - $c <br>";<br /> }<br />}<br />?><br />

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ファーウェイは、Watch GT 5 および Watch GT 5 Pro スマートウォッチ用のソフトウェア バージョン 5.0.0.100(C00M01) をグローバルに展開しています。これら 2 つのスマートウォッチは最近ヨーロッパで発売され、標準モデルが同社の最も安価なモデルとして登場しました。このハーモニー

『鉄拳』シリーズのディレクターである原田勝弘氏は、かつて真剣にカーネル・サンダースを象徴的な格闘ゲームに登場させようとした。 TheGamerとのインタビューで原田氏は、このアイデアを日本KFCに売り込み、ファストフード界のレジェンドをGとして追加したいと考えていたことを明かした。

テスラは最新の完全自動運転 (監視付き) バージョン 12.5.5 を展開しており、これには、ファウンデーション シリーズのトリム価格に含まれる機能を備えたピックアップが発売されてから 10 か月後に、約束されていたサイバートラック FSD オプションがついに付属します。 F

2024年9月初め、AnkerのZolo 140W充電器がリークされました。これは同社初のディスプレイ付き壁掛け充電器だったため、大きな話題になりました。 YouTube の Xiao Li TV からの新しい開封ビデオでは、この製品を直接見ることができます。

Xiaomiは間もなくMijiaグラフェンオイルヒーターを中国で発売する予定です。同社は最近、Youpin プラットフォームでホストされるスマート ホーム製品のクラウドファンディング キャンペーンを実施し、成功を収めました。ページによると、デバイスはすでに出荷され始めています

Garmin は、最新のハイエンド スマートウォッチの新しい安定したアップデートのセットで月末を迎えます。要約すると、同社は Enduro 3、Fenix E、および Fenix 8 のバッテリー消耗の多さに対処するためにシステム ソフトウェア 11.64 をリリースしました (Amazon で現在 1,099.99 ドル)。

サムスンの待望の折りたたみ式「スペシャルエディション」の発売には、また新たな展開が加わった。ここ数週間、いわゆる Galaxy Z Fold Special Edition に関する噂はかなり静かになりました。代わりに、焦点はGalaxy S25シリーズに移りました。

10 年以上の歴史を持つ Manjaro は、インストールと使用が簡単で、初心者とパワーユーザーの両方に適した最もユーザーフレンドリーな Linux ディストリビューションの 1 つとみなされています。主にオーストリア、ドイツ、フランスで開発されたこの Arch ベースのディストリビューション
