【PHP・Laravel】よく使うメソッドまとめ
※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。
【目次】
- PHP
- Laravel
- orderByメソッド
- paginateメソッド
- $fillableプロパティ
- $datesプロパティ
- $perPageプロパティ
- $appendsプロパティ
- アクセス修飾子
- parent::
- hasManyメソッド
- hasManyThroughメソッド
- bootメソッド
- foreachメソッド
- observeメソッド
- スコープ
- ローカルスコープ
- グローバルスコープ
- 静的メソッド
- 動的メソッド
- eachメソッド
- pluckメソッド
- flattenメソッド
- uniqueメソッド
- array_get関数
- whereNotNullメソッド
- whereメソッド
- orWhereIn
- getGroupsメソッド
- handleメソッド
- Builderクラス
- base_path()関数
- toArrayメソッド
- implodeメソッド
PHP
function_existsメソッド
指定した関数が定義されている場合に TRUE を返します。
use
クロージャに、親のスコープの変数を引き継がせることができます。
$message = 'world';
$example();
// クロージャは、通常の引数も受け付けます
$example = function ($arg) use ($message) {
var_dump($arg . ' ' . $message);
};
$example("hello");
結果
string(11) "hello world"
array_merge
ひとつまたは複数の配列をマージします。
前の配列の後ろに配列を追加することにより、 ひとつまたは複数の配列の要素をマージし、得られた配列を返します。
使い方
array_merge ( array $array1 [, array $... ] )
例
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
https://www.php.net/array_merge
__construct([ mixed$args = "" [, $...]] )
クラスのコンストラクタメソッドを宣言する際に使用します。
コンストラクタメソッドを有するクラスは、新たにオブジェクトが生成される度にこのメソッドをコールします。これにより、そのオブジェクトを使用する前に必要な初期化を行えます。
親クラスのコンストラクタを実行するには、子クラスのコンストラクタの中で「parent::__construct()」をコールすることが必要です。
https://www.php.net/manual/ja/language.oop5.decon.php
コンストラクタ
クラスをnewした瞬間に実行される関数のこと。
最初にしておかなければならない処理などでよく活用される。例えば、メンバ変数の初期化処理などです。
array_unshift
一つ以上の要素を配列の最初に加えます。
https://www.php.net/manual/ja/function.array-unshift.php
in_array
配列に値があるかチェックします。
配列に値が見つかった場合はTRUEを返します。それ以外はFALSEを返します。
https://www.php.net/manual/ja/function.in-array.php
Laravel
orderByメソッド
指定したカラムでクエリ結果をソートします。
最初の引数はソート対象のカラムで、第2引数はソートの昇順(asc)と降順(desc)をコントロールします。
$users = DB::table('users')
->orderBy('name', 'desc')
->get();
paginateメソッド
ユーザーが表示している現在のページに基づき、正しいアイテム数とオフセットを指定する面倒を見ます。デフォルトではHTTPリクエストのpageクエリ文字列引数の値により現在ページが決められます。もちろんこの値はLaravelが自動的に探し、さらにペジネーターが挿入するリンクを自動的に生成します。
$users = DB::table('users')
->orderBy('name', 'desc')
->paginate(15);
面白そうな記事:
LaravelのMacroを使ってBuilderに機能を追加する方法 - いっきのblog
$fillableプロパティ
フィールドに複数代入したいモデルの属性を指定できます。
Eloquentモデルはデフォルトで複数代入から保護されています。
フィールドに複数代入したい場合は、このfillableプロパティを使って、fillable属性をモデルに指定します。
$datesプロパティ
deleted_atカラムを追加することで、モデルのソフトデリートを有効にできる。
$perPageプロパティ
ページ毎に何件データを表示するか指定できる
$appendsプロパティ
appendsリストに属性名を追加することで、データベースのデータがモデルの配列とJSON形式両方に含まれるようになります。
アクセサの設定を行った際に使います。
アクセス修飾子
プログラム上で変数やメソッドが同名として重複しないように、変数や関数の有効範囲を指定するもの。
public > protected > private
PHPのアクセス権 public protected private static | システムガーディアン株式会社
※例外で「static」があります。クラス指定すれば、インスタンスを生成せずにどこからでも使える優れものです。
PHPを愛する試み 〜self:: parent:: static:: および遅延静的束縛〜 - maeharinの日記
parent::
parent::とすると、スコープは「parent::が記載されたクラスの親クラス(継承(extends)されたクラスなど)」になる。
PHPを愛する試み 〜self:: parent:: static:: および遅延静的束縛〜 - maeharinの日記
hasManyメソッド
「1対多」リレーションを定義する際に使う。
◆Postが多くのCommentを持つ場合
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
/**
* ブログポストのコメントを取得
*/
public function comments()
{
return $this->hasMany('App\Comment');
}
}
この場合、EloquentはCommentモデルの外部キーをpost_idであると自動で想定してくれます。
hasManyThroughメソッド
仲介するテーブルを通して直接関連付けしていないテーブルへアクセスするための、便利な近道を提供します。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
/**
* この国の全ポストを取得する
*/
public function posts()
{
return $this->hasManyThrough('App\Post', 'App\User');
}
}
第一引数は最終的にアクセスしたいモデル名、第2引数は仲介するモデル名を記入します。
リレーションのクエリ実行時は、典型的なEloquentの外部キー規約が使用されます。
リレーションのキーをカスタマイズしたい場合は、hasManyThroughメソッドの第3引数と、第4引数を指定してください。
第3引数は仲介モデルの外部キー名、第4引数は最終的なモデルの外部キー名です。
第5引数はローカルキーで、第6引数は仲介モデルのローカルキーです。
bootメソッド
参考記事:laravelのEloquentクラスのbootメソッド – 株式会社シーポイントラボ | 浜松のシステム開発会社
モデルが作成される際に初期化処理をするメソッドで、bootTraitsメソッドを呼び出します。
bootTraitsメソッドは、使用しているTraitの中にある「boot + Traitのクラス名」というメソッドを呼び出します。
ソースコード:vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php
モデルクラス内の各メソッドに、必ず必要な記述がある場合などに有効なメソッドです。
foreachメソッド
配列を反復処理する。
次の例で例えると、各反復において現在の要素の値($usersの現在の要素の値)が$userに代入され、現在の要素の値の処理が完了したあとに、内部配列ポインタが一つ前に進められます。
例
foreach ($users as $user) {
echo $user->name;
}
https://www.php.net/manual/ja/control-structures.foreach.php
observeメソッド
監視したいモデルに対して、observeメソッドを使用することで、オブザーバを登録することができる。
bootメソッド(アプリの初期起動処理)を併用する必要があります。
スコープ
ある変数や関数などの名前(識別子)を参照できる範囲のこと。要は、全体の中でどこからどこまでの範囲か、を特定するもの。
通常、変数や関数が定義されたスコープの外側からは、それらの名前を用いるだけでは参照できません。
ローカルスコープ
関数内に変数や関数のスコープがあること。
例
<?php
function hoge()
{
$val = 'ローカルスコープ';
return $val;
}
echo $val;
echo hoge();
結果
> // echo $val;
>ローカルスコープ // echo hoge();
この結果から、関数内で定義した変数$valが出力されないので、$valはローカル変数として扱われていることが分かります。
グローバルスコープ
関数内で定義されていない変数や関数のスコープのこと。
例
<?php
$val = 'グローバルスコープ';
function hoge2()
{
return $val;
}
echo $val;
echo hoge2();
結果
>グローバルスコープ // echo $val;
>Undefined Variable: val // echo hoge2();
静的メソッド
public static functionで定義されるメソッド。
インスタンスに影響を受けない。
【Laravel】静的メソッドと動的メソッドについて - Qiita
【PHP】静的と動的メソッドとは - Laravel・PHP入門
動的メソッド
public functionで定義されるメソッド。
インスタンスに依存する。
【Laravel】静的メソッドと動的メソッドについて - Qiita
【PHP】静的と動的メソッドとは - Laravel・PHP入門
eachメソッド
コレクションのアイテムを繰り返しで処理し、コールバック関数に各アイテムを渡します。
pluckメソッド
指定したキーの全コレクション値を取得します。
flattenメソッド
多次元コレクションを一次元化します。
uniqueメソッド
コレクションの重複を取り除いた全アイテムを返します。
array_get関数
第一引数に指定された値から、第二引数の「ドット」記法で指定された値を、深くネストされた配列から取得します。
whereNotNullメソッド
値を取得する際に、指定したカラムの値が「nullでない」という検索条件を加えることができます。
whereメソッド
面白い記事があったので。
引数にfunction()も受け付けてくれるらしいです。
Laravel・データベースからデータ取得する全実例 – console dot log
使い方
where( フィールド名, 値 )
where( フィールド名, 演算記号, 値 )
【Laravel】Query Builder(クエリビルダー) – 各種where句の使い方 | Public Constructor
orWhereIn
※まだ解明できてません・・・
getGroupsメソッド
ユーザーが所属するグループを取得する。
Sentry2(Laravel4)のメソッド一覧 - WinRoad徒然草
handleメソッド
ミドルウェアからアプリケーションへ送られるリクエスト(Requestインスタンス)を作成することができます。
public function handle($request, Closure $next)
{
return $next($request);
}
第一引数にリクエストの情報を管理するRequestインスタンスが渡される。第二引数は無名クラスを表す$next(Closureクラスのインスタンス)が渡されます。
Builderクラス
SQLクエリ文を生成するための機能を提供します。
Illuminate\Database\Query名前空間と
Illuminate\Database\Eloquent名前空間に
定義されています。
EloquentのBuilderクラス内部に、QueryのBuilderインスタンスが保持されています。
Modelクラスに定義されていないメソッドは、EloquentにあるBuilderクラスに委譲されます。
EloquentのBuilderクラスに定義されていないメソッドは、QueryのBuilderクラスに委譲されます。
【Laravel】Query Builder(クエリビルダー) – 各種where句の使い方 | Public Constructor
base_path()関数
プロジェクトルートの完全パスを返します。
指定したプロジェクトルートディレクトリからの相対パスから絶対パスを生成します。
例
echo base_path('vendor/bin');
結果
/home/admin/php-dev/laravel5/vendor/bin
toArrayメソッド
コレクションをPHPの「配列」に変更します。
コレクションの値がEloquentモデルの場合は、そのモデルを配列に変更します。
implodeメソッド
コレクションのアイテムを結合させます。
結合する際に間に入れたい"糊"の役割になる文字列を指定することもできます。