![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
php素人です
スコープ演算子についておしえてください
質問1
スコープ演算子を使えばclass内の変数を下記のような書き方で取得できますか?
質問2
スコープ演算子を使うとアロー演算子でオブジェクトを作成するよりプログラムの負荷の軽減になるのですか?
質問3
アロー演算子を使わずにスコープ演算子を使ったほうがいいのでしょうか?
質問4
スコープ演算子のデメリットはありますか?
class Message {
public $number=1;
function hello() {
return "こんにちは";
}
}
$number = Message::$number;
$message1 = Message::hello();
よろしくお願いします
No.1ベストアンサー
- 回答日時:
前の回答で述べたとおり、「static」をつけるかどうかでどちらを使うべきか分かれます。
というかどちらかしか使えません。
静的に使うならば
class Message {
public static $number = 1;
public static function hello() {
return "こんにちは";
}
}
$number = Message::$number;
$message1 = Message::hello();
のように書かなくてはいけません。
誤った使い方
http://codepad.org/3OXZnCXS (こちらはFatalErrorが発生してスクリプトが停止)
http://codepad.org/bQIHWH6O (こちらは動作はするが望ましくないというメッセージが発せられる)
負荷についてですが、静的コールのほうが動的コールよりも軽いです。
オブジェクト指向初心者のうちは全て動的に扱うようにし、
「このメソッド静的にしても問題ないんじゃ」と気づけばそのように変更すればいいと思います。
ちなみに静的メソッド内から他の静的メソッド・プロパティにアクセスしたい場合、
自分自身のクラス名(ここではMessage)の代わりに「self」を使うことが出来ます。
class Message {
public static $number = 1;
public static function echoNumber() {
echo self::$number;
}
}
Message::echoNumber();
遅延静的束縛を利用するならば「static」というまた別の意味のstaticが現れますが、こちらはまだ知らなくてもいいでしょう。
http://php.net/manual/ja/language.oop5.late-stat …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ここで言う「アロー演算子」の役割を教えてください。 1 2022/03/26 02:38
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- 物理学 量子力学 生成消滅演算子 2 2022/08/04 23:17
- Excel(エクセル) エクセルの演算子の利用について 3 2023/06/19 19:49
- SQL Server SQLについて質問です。 a表がありその表には従業員名を保存するname列があります。 LIKE演算 1 2022/05/17 17:49
- 物理学 この波動関数の複素共役はなんですか? 2 2022/08/17 00:32
- C言語・C++・C# プログラミング初心者です。 演算子を習い、自力で計算機を作ろうと思い、写真のようなプログラムを書きま 2 2022/08/14 21:27
- 数学 (D-2)^2 (D+3)x = 0 を解けという問題がわかりません。 Dは演算子 です。 よろしく 5 2023/07/19 11:29
- 数学 群の公理 xの逆元yはxごとにただ1つ決まる。そこで そのyを、一般的には記号x'で表す。 この演算 2 2022/08/06 02:23
- その他(パソコン・スマホ・電化製品) FORTRANの紙テープに穴開けるタイプの電算機使ったことありますか?マークシートに記入して、読み込 3 2023/05/29 19:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
NumericUpDownの数値を選択済み...
-
フォームを開く時のイベント処理
-
verilog HDLのコードについて質問
-
ヒント表示について
-
テキストボックスからフォーカ...
-
シリアル通信について
-
VB.NET でのLaod/unLoad につ...
-
TextBoxにカーソルがあるかない...
-
C++の例外処理
-
ASP.Net と JavaScript の関係...
-
手書きの文字や枠を認識してデ...
-
word
-
数式中の文字をCambria Math以...
-
Illustratorテキストエリアへ塗...
-
PowerPoint SmartArtの箇条書...
-
Excel VBAで改行を含む文字列を...
-
PDF→CSVへ変換
-
illustratorとExcelは連携出来...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
NumericUpDownの数値を選択済み...
-
VB.NET でのLaod/unLoad につ...
-
フォームを開く時のイベント処理
-
VB.NETのテキストボック...
-
テキストボックスからフォーカ...
-
vba メモリーリーク
-
ob_start()した後、ob_flush()...
-
C#での変数スコープ?
-
項目数は英語で
-
シリアルフラッシュメモリをな...
-
mailの送信音がしなくなったの...
-
TextBoxにカーソルがあるかない...
-
フリップフロップについての質...
-
シリアル通信について
-
ACCDE形式でクエリの警告メッセ...
-
ブック開いたときのフォーカス指定
-
携帯電話のマイクロSDカードに...
-
VBのレコードセットを閉じない...
おすすめ情報