[解決済み】trait関数をオーバーライドして、オーバーライドした関数から呼び出すには?
2022-03-24 13:51:09
質問
シナリオ
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A;
function calc($v) {
$v++;
return A::calc($v);
}
}
print (new MyClass())->calc(2); // should print 4
このコードは動作しません。また、継承されたようなtrait関数を呼び出す方法が見つかりません。私は
self::calc($v)
,
static::calc($v)
,
parent::calc($v)
,
A::calc($v)
と以下のようになります。
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A {
calc as traitcalc;
}
function calc($v) {
$v++;
return traitcalc($v);
}
}
何も動作しません。
この機能を動作させる方法はありますか、それともこれよりはるかに複雑なtrait関数を完全にオーバーライドしなければなりませんか :)
解決方法は?
前作はもう少しでしたね。
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A {
calc as protected traitcalc;
}
function calc($v) {
$v++;
return $this->traitcalc($v);
}
}
traitはクラスではありません。そのメンバに直接アクセスすることはできません。基本的には自動化されたコピー&ペーストだけです...
関連
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] self-typesとtrait subclassの違いは何ですか?
-
[解決済み] リファレンス - このシンボルは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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法