[解決済み] 子のインスタンスから親の関数を呼び出すには?
2022-02-14 05:54:28
質問
私は、モデル
BaseUser.class.php
User.class.php
UserTable.class.php
ユーザークラスで delete関数をオーバーライドしています。
class User extends BaseUser {
function delete(){
}
}
では、親のdelete関数を呼び出すには・・・・・・?
例
$user = new User();
$user->delete(); // will call the overridden delete
$user-> ?? ; // want to call parent delete
解決方法は?
技術的には、これは外部(パブリックインターフェース)からは不可能です。
理由を理解し(そうでなければ以下を読んでください)、実際に何をするのか分かっているのであれば、実際に機能を提供しない理由はないでしょう。
class User extends BaseUser {
...
function parentDelete(){
parent::delete();
}
...
}
user = new User();
$user->delete(); // will call the overridden delete
$user->parentDelete(); // want to call parent delete
しかし、もしそのようなことがあれば、それは継承を誤って使用したことになります。これは例外的な状況に違いありません。なぜなら、実際にそのようなことが必要な状況はまったく想像できないからです。
ですから、なぜその機能が必要なのかを考えて、よりよい提案をするようにしましょう。
<ブロッククオートなぜそれがダメなのか?
非常に単純な理由:ソフトウェアでは、以下のことを知る必要はありません。
$user
が親を持つかどうかです。そんなことは、まったく気にする必要のないことです。
これにより、ソフトウェアの中にある任意のユーザー・オブジェクトを、後からユーザーの子オブジェクトに置き換えることができるようになります。これは、時間の経過とともにソフトウェアを変更したい場合に重要です。
もし、内部の詳細をパブリック・インターフェースの一部にしてしまうと、物事の柔軟性を保つ可能性を奪ってしまうことになります。柔軟性がないというのは、本当に悪い状況です。
関連
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】In_arrayが動作しない。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
-
[解決済み] PHP 配列をキーではなく値で削除する
-
[解決済み] PHPで有用なエラーメッセージを得るにはどうしたらよいですか?
-
[解決済み] PHP 多次元配列の値による検索
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。