Laravel hereに関する短いチュートリアルを読んでいました。私は一般的にlaravelまたは開発の経験おりませんので、私はこのコードの一部が正確に何をするか疑問に思って:コロンで関数を宣言した後のLaravel呼び出しモデル
public function approve(): User
それは私には思われると、それだけで内部からモデルを呼び出すのと同じことですこのように機能します:
App\User::
この2つの承認の違いは何ですか?
Laravel hereに関する短いチュートリアルを読んでいました。私は一般的にlaravelまたは開発の経験おりませんので、私はこのコードの一部が正確に何をするか疑問に思って:コロンで関数を宣言した後のLaravel呼び出しモデル
public function approve(): User
それは私には思われると、それだけで内部からモデルを呼び出すのと同じことですこのように機能します:
App\User::
この2つの承認の違いは何ですか?
いいえ、それらは同じではありません。最初のコードはPHP 7のreturn type declerationsを利用しています。
はのインスタンスがUser
クラスのインスタンスを返さなければならない、またはPHPがTypeError
を投げ捨てると言われています。戻り値の型宣言を定義するときには、クラスのFQNを指定することができます。
public function approve(): \App\User
のインタフェースを定義するときには、特別に便利です:
https://secure.php.net/manual/en/migration70.new-features.php:PHP 7への道を作った他の何のRFC
interface CommentsIterator extends Iterator {
function current(): Comment;
// This enforces that any implementation of current()
// method, must return an instance of Comment class.
}
参照してください。
そして、PHP 7の新機能に関するJeffreyのスクリーンキャストを自分で扱う:
https://laracasts.com/series/php7-up-and-running/episodes/3
しかし、2番目のコード(App\User::whatever()
)は、App\User
クラスの静的メソッドwhatever()
を呼び出すだけです。これは、戻り値の型を強制する最初のコード例とは関係ありません。
共有最初の例:
public function approve(): User
は、単にあなたがPHPに静的な型のプログラミング手法を使用することができますPHP7の機能です。基本的にこの新しい関数シグネチャは、この関数がUser
型を返す必要があること、またはTypeError
例外をスローすることを示しています。
共有第二の例:
App\User::
が使用しているがスコープ定義演算子(::
)と呼ばれるものをこの演算子を使用すると、クラスレベル/静的メソッドを呼び出すことができます。 Laravelでは、例えば、そのようなものであろう:
App\User::Find(1);
又は
App\User::Where('id', 1);
これらはそうように呼ばれることになるオブジェクト・レベル・メソッド異なる:
$user = new App\User();
$user->id = 1;
$user->save()
注意クラスインスタンスは->
演算子を使用します。あなたが私には、以下のリンクに言及したことについての詳細を学ぶことができます
http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php
https://laravel.com/docs/5.3/eloquent
運のベスト!