大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

【PHP・Laravel】よく使うメソッドまとめ

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

  

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メソッド

コレクションのアイテムを繰り返しで処理し、コールバック関数に各アイテムを渡します。

コレクション 5.5 Laravel

 

pluckメソッド

指定したキーの全コレクション値を取得します。

コレクション 5.5 Laravel

 

flattenメソッド

多次元コレクションを一次元化します。

コレクション 5.5 Laravel

 

uniqueメソッド

コレクションの重複を取り除いた全アイテムを返します。

コレクション 5.5 Laravel

 

array_get関数

第一引数に指定された値から、第二引数の「ドット」記法で指定された値を、深くネストされた配列から取得します。

ヘルパ 5.5 Laravel

 

whereNotNullメソッド

値を取得する際に、指定したカラムの値が「nullでない」という検索条件を加えることができます。

データベース:クエリビルダ 5.5 Laravel

 

whereメソッド

面白い記事があったので。

引数にfunction()も受け付けてくれるらしいです。

Laravel・データベースからデータ取得する全実例 – console dot log

 

 使い方

where( フィールド名, 値 )
where( フィールド名, 演算記号, 値 )

 

【Laravel】Query Builder(クエリビルダー) – 各種where句の使い方 | Public Constructor

 

orWhereIn

※まだ解明できてません・・・

軽量シンプルPHPフレームワーク | Curry

 

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モデルの場合は、そのモデルを配列に変更します。

コレクション 5.5 Laravel

 

implodeメソッド

コレクションのアイテムを結合させます。

結合する際に間に入れたい"糊"の役割になる文字列を指定することもできます。

コレクション 5.5 Laravel