質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

2回答

815閲覧

非互換コンテキストが何を指すか

toll_tree

総合スコア199

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

0クリップ

投稿2019/05/25 04:04

編集2019/05/25 04:05

こちらPHPマニュアルにおける「スタティックではないメソッドを非互換のコンテキストでスタティックに呼び出すと」こちらの部分の「非互換のコンテキスト」とはどういうものを指すのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

php

1 2class Clazz { 3 public function func() { 4 } 5} 6 7Clazz::func();

投稿2019/05/25 04:06

編集2019/05/25 04:09
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/05/25 04:14

ご回答ありがとうございます。 非互換というのは、クラス外?のような部分を指すという意味でしょうか。。?
退会済みユーザー

退会済みユーザー

2019/05/25 04:18 編集

読み違えていると思います。 例2 $this 疑似変数の例 にも書かれているでしょ。
toll_tree

2019/05/25 04:21

今、「例2 $this 疑似変数の例」を見直してみたのですが、「$a->foo();」以外の出力は、「$this is not defined.」となっています。ということは、インスタンスからのアクセス以外のことを指すのでしょうか?
退会済みユーザー

退会済みユーザー

2019/05/25 04:25

なぜあなたは文脈で読まずに単語を他の文章との関わりで読まないのでしょう? だから理解できないんですよ。
toll_tree

2019/05/25 06:07 編集

誤投稿につき削除
guest

0

ベストアンサー

国語力の問題な気がしますが・・・。
非互換という言葉を、分解して考えてみましょう。
相互に置き換えることができない(非)
となりますよね?
クラスに置ける、スタティックなメソッドないし、メンバは、
例えば、

php

1class test1 { 2 static $num = 0; 3} 4test1::num += 1; 5echo test1::num; // 出力1

というように、クラス外で処理を加えた時、
test1クラスに値が保持される(スタティック)ため、
外側の処理で置き換えることができる、
つまり可互換なわけです。(そんな言葉ありませんが、わかりやすく言うために)

では、非互換はというと、

php

1class test1 { 2 public $num; 3} 4test1::num = 0; // 多分この時点でエラー。外側で静的に処理できるメンバではないため。 5 6// こっちならできる 7$instanse1 = new test1(); 8$instanse1->num = 1; 9$instanse1->num += 1; 10echo $instanse1->num; // 出力2 11 12// だが、インスタンスを生成しなおせば、当然値はリセットされる 13$instanse2 = new test1(); 14echo $instanse2->num; // 2とは当然出てこない。nullかエラー

これは、メンバnumがスタティックではないため、
各呼び出しやインスタンス間で相互に置き換えることができない、
すでに別物になっているからです。
なので、非互換となるのです。

って、ここまで書いといて、解釈や構文間違ってたらすみません。。。。

して、
言葉遊びで、その言葉なんなの?って思考が止まると、時間がもったいない気がします。
それだったら、やってみて、動かしてみて、言葉の意味はわからないけど、こういった時こう動く(エラーが起きる)ってことを言ってるのか!と理解した方がいい気がします。
だって、リンゴはリンゴですし、その言葉の意味って、リンゴ→林檎→林と檎、じゃぁ、林の意味は、檎の意味は・・・って、いちいちやってたら、前に進めないと思いません?
これは、完全に私見なので、あれですが・・・。

投稿2019/05/25 14:01

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/05/25 14:32

ご丁寧にご回答頂きありがとうございます。 スタティックではない為、置き換えることができず、非互換となるといった感じですね。 確かに、言葉の意味でつまずかず先へ進むことも大事ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問