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

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

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

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

オブジェクト指向

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

Q&A

解決済

1回答

1968閲覧

PHPのスコープ定義演算子 (::) について

gsuisk

総合スコア72

PHP

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

オブジェクト指向

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

0グッド

1クリップ

投稿2018/09/12 16:27

PHPマニュアルで使われるスコープ定義演算子がよくわかりません。
マニュアルにはこのように書いてあります。

static, 定数 およびオーバーライドされたクラスのプロパティやメソッドにアクセスすることができます。

例えば

DateTime::format 

これはDateTimeクラスのformatメソッド(インスタンスメソッド)という意味だと認識しています。

::は静的メンバにアクセスするための演算子で、formatは静的メソッドではなくインスタンスメソッドなので以下のように書くのが正しいのではないでしょうか?

DateTimeクラスのインスタンス -> format

DateTimeクラスの定義を確認しましたが、静的メソッドではありません。

PHP

1DateTime implements DateTimeInterface { 2 //その他省略 3 public string format ( string $format ) 4} 5

スコープ定義演算子を使ってインスタンスメソッドへアクセスできるようになっているので、マニュアルではこのような記述になっているのでしょうか?

教えてください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

formatは静的メソッドではなくインスタンスメソッドなので以下のように書くのが正しいのではないでしょうか?

はい、::を使ってインスタンスメソッドを呼び出すのは、クラス内からparent::として親クラスのメソッドを呼び出す場合など、ごく限られています。

投稿2018/09/12 22:44

maisumakun

総合スコア145121

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

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

gsuisk

2018/09/13 22:25

わかりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問