[CakePHP3] Setter(セッター)とGetter(ゲッター)をざっくりと知る。

前回、CakePHP3をインストールして、おためにしにユーザー管理を作ったが、パスワードが丸見えだった。

なので、次はパスワードの暗号化を行う。

まず、ModelのEntityのUser.phpを開く。

んで、クラス上部にuse句で、パスワードをハッシュ化するクラスのnamespaceを追加。

なんだか、C#な感じになったな~。
use でクラスを指定するから、NetBeans君でコード補完が気持ちいい。

C#で書くと、こんな感じかな。

脱線した。

んで、以下のメソッドを追加する。

上記は、passwordというカラム名をセットする際に、このセッターを通り、$valueにある値をハッシュクラスでハッシュ化した値を戻すことで、saveされる際に、結果的にその暗号化された値が保存される。

これは、CakePHP3でセッター(Setter)と呼ばれる機能で、命名規則に基づいているカラム名をCameCaseで紐付けて、データをセットする際に加工するっぽい。
中身ちらっと追いかけたら、それっぽい所があった。

これで、試しに別のユーザーを作成したら、ちゃんとパスワードはハッシュ化されていた。
ワードラップが働いて、はみ出しまくってるけど(^^;)

CakePHP3-2-1

 

似たような感じで、 $method = '_get' . Inflector::camelize($property); という記述を見かけたので、ゲッター(Getter)もあるなと思い、下記のようなメソッドを追加。

読み込みなおしてみると、下記のようにidがすべて100倍されるようになった。
CakePHP3-2-2

以上、CakePHP3のゲッター(Getter)とセッター(Setter)なお話。

パスワードのハッシュ化もできたので、次はFormでユーザー認証してみる。 >> [CakePHP3] ざっくりとフォーム認証

 

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">