利用手順 CakePHP3新機能 View Cell の利用手順 Cellの使いどころについて メリット CellはTemplateから呼び出せる都合上、 Controllerのアクションへ記述を追加することなく画面にデータと結びついた表示を追加できます。 これは既に複雑化しているControllerをに対する変更のリスクを避ける、非常に有効な方法です。 利用範囲はReadに留める しかしアクションのコードを汚さなくて済むというメリットの一方で、デメリットも勿論存在します。 それは責任範囲をCRUDのうちReadのみに留めておかないと、Controllerがより一掃汚れてしまうという点です。 Cellでフォームを追加した場合、Cellの存在を知らなくて良いはずのControllerのアクションがその保存を担います。 ReadとCreate/Updateでアクションを分けていたとしても、Cr
社内用にまとめた内容の転載。 ココらへんの話をします CakePHP3の値チェックは2段階! ValidationとValidation Provider Application Rules Entityに渡す値のチェック(検証)は2段階で行われる CakePHP3では、従来とは大幅に「バリデーション」の機構が変更されました。 これまでModel::save()やModel::delete()時に暗示的に、もしくは明示的にModel::validate()をした際に走っていたデータの検証が、次のような2ステップに分けて扱われます。 Entity作成・更新時に行われる「validation」 Databaseに作用する(insert, update, delete)際に行われる「(application | domain) Rule」 この変化はパッと見とっつきにくいし、 なんぞ…という感じ
動作するコード User, Companyテーブルに対してデータを保存したい場合のフォーム例となります。 class PageController extends AppController { public function initialize() { $this->User = TableRegistry('User'); $this->Company = TableRegistry('Company'); } public function index() { if ($this->request->is('post')) { // Validation実行 $user = $this->User->patchEntity( $this->User->newEntity(), $this->request->data['User'] ); // Validation実行 $comp
Inflector¶ class Inflector¶ Inflector は文字列の複数形や大文字への変換を取り扱うクラスです。 Inflector のメソッドは通常では静的にアクセスします。 例: Inflector::pluralize('example') は "examples" を返します。 inflector.cakephp.org にてオンライン上で変換を試すことができます。 static Inflector::pluralize($singular)¶ 入力: Apple, Orange, Person, Man 出力: Apples, Oranges, People, Men static Inflector::camelize($underscored)¶ 入力: Apple_pie, some_thing, people_person 出力: ApplePie, S
はじめに PHPerの皆様、おはようございます。こんにちは。こんばんは。 本記事はPHP Advent Calendar 2016の12日目のエントリです。 個人的にはQiitaでは特定の問題の解決策を書くのが好きなのですが、たまには少し広いトピックで今日は「PHP7で新規サービスつくってみた」的なテーマで書いてみたいと思います。 なので、技術的な深さがないかもしれませんが、一人でも多くPHPerの方がPHP7の導入に重い腰?を上げてもらったり、プライベートでサービスをつくるのって愉しそう!と思ったりしていただければ幸いです。 そして、アレコレ書いてたら凄く長くなってしまった。ごめんなさい。 何をつくったのか 今年の10月にプライベートで「Kocoromo」というAndroidアプリをリリースしました。 KocoromoではバックエンドをPHP7で実装したのでその時やったこと、やらなかった
この記事は CakePHP3 Advent Calendar 2016 の 9日目の記事です。 CakePHP といえば必要なソースコードを自動生成してくれる bake コマンドがとっても便利です。CakePHP3 になってより使いやすくなりました。 普段の業務で使いはじめて結構経ちましたので、いくつかプラクティスを紹介してみたいと思います。(ベストとは書かない) bake で生成したクラスは継承して使おう bake で生成されるコードの中には DB スキーマの情報を元にして生成されるコード が含まれます。 なので、以下のようなケースのときに困ります。(上から時系列) DB に users テーブルを作成する bake model して UsersTable クラスを生成する 生成された UsersTable クラスに何らかの追加実装を行う DB の users テーブルにカラムを追加する
この記事は Qiita の CakePHP3 Advent Calendar 2016 の5日目として投稿したものです。 皆さんは CakePHP3 におけるコンポーネントの存在意義について、どのようなお考えをお持ちでしょうか。 以前の CakePHP であれば、複数のコントローラに共通する処理がある場合、それをコンポーネントにまとめるというのはごく普通のことでした。しかし、 PHP5.4 でトレイトが登場したことによって状況は変わってきました。 特に PHP5.5.9 以上を対象にする CakePHP3 においては、コンポーネントに共通処理を書くことにあまりメリットを見出せていない方も少なくないかもしれません。コンポーネントの代わりにトレイトを使用している方もいらっしゃるかもしれませんね。 CakePHP3 のソースコードでもトレイトはふんだんに使用されています。また、 Cookbook
データバリデーション¶ データバリデーションは、どのようなアプリケーションにおいても重要な部分です。 なぜなら、これはモデル内のデータがアプリケーションのビジネスルールに 則していることを保証する仕組みだからです。 たとえば、パスワードの長さが8文字以上あることや、 ユーザ名がユニークであることを保証したい場合などが考えられます。 バリデーションルールを定義することで、フォームの扱いが非常に楽になります。 データバリデーションのプロセスには、いろいろと異なった側面があります。 そのうちこのセクションで扱うのは、モデルに特化した部分です。基本的には、 あなたのモデルで save() メソッドをコールした時に起こる内容です。 FormHelper には、バリデーションエラーの 表示がどのように処理されるのかについての記載があります。 データバリデーションへの最初のステップは、 まずモデルの中に
CakePHPにおけるパフォーマンスチューニングとは パフォーマンス向上するための方法は大まかに分けて2種類ある 1. ボトルネックとなる処理を探し当てて改善する方法 コードを修正する、パラメータをチューニングするなど。 2. キャッシュを使う方法 処理実行結果をキャッシュに保存することで、2回目にアクセスしたときにその処理を通らずに処理結果を返す事ができる。 DBのパフォチュー 1. 発行しているクエリ数を減らす これをViewに貼ればカウントできる。減らせるクエリは減らす。 2. findのパフォチュー 極力以下を利用する。 a) 基本的にqueryメソッドが最強。ただし... コードの可読性が下がるので大量データを取得する必要があるときに利用。場合によってはfieldで取得するより早い。 ✕ $this->Hoge->find('all'); ◯ $this->Hoge->query
月末にウワサされている某イベントに期待を膨らませているtanakaです。 前回の記事(CircleCIで始めるCakePHP3アプリの継続的インテグレーション)に続いて、 データベースを使ったテストをCircleCIで実行できるようにします。 目次 前回のおさらい Step 0)設定の管理について Step 1) ローカル開発環境でMySQL接続設定を行う Step 2) データベースを使ったテスト(1) マイグレーションファイルを作成する(accountsテーブルの作成) Step 3) データベースを使ったテスト(2) 実装およびテスト Step 4) CircleCI でMySQLデータベースを使ったテストを行う まとめ 前回同様、ローカル環境でテストできるようにしてから、CircleCIの設定を書きますので、「ローカルではできてるよ!」という場合はStep 4までジャンプしてOKで
New CakePHP 5.0 Chiffon. Faster. Simple. Delicious. What's new in version The migration guide has a complete list of what's new in. We recommend you give that page a read when upgrading. A few highlights from 5.0 are: PHP 8.1 required. Improved typehints across the framework. CakePHP now leverages union types to formalize the types of many parameters across the framework. Upgraded to PHPUnit 10.x
Welcome¶ CakePHP 3 is a web development framework running on PHP 7.4 (min. PHP 5.6). Read CakePHP at a Glance to get an introduction to the fundamentals of CakePHP 3. The CakePHP cookbook is an openly developed and community editable documentation project. Notice the pencil icon button fixated against the right wall; it will direct you to the GitHub online editor of the active page, allowing you t
こんにちは、Apple Watch Series 2を買いましたtanakaです。心拍数、歩数、消費カロリーなどを数値化してくれると、日常がゲームのように感じられて楽しいですね。 最近のプロジェクトで、CakePHP3アプリをCircleCIでビルドする環境を構築しましたので、 アプリを作成するところからCircleCIでビルドするまでをご紹介します。 リポジトリがGitHubで公開されても良いなら、無料で試せますヨ。 目次 継続的インテグレーション(Continuous Integration)とは 前提 Step 1) CakePHP3アプリの作成 CircleCIでビルドするまでの流れ Step 2) GitHub上のリポジトリにPushする Step 3) CircleCI にアカウント登録 Step 4) プロジェクトを選択して、最初のビルドを実行 ビルドで何をやっているか St
どうもfujiharaです。 本日で1年の4分の3が終わったわけですが早くないですか? 昨年の日本のハロウィンがーーって話がつい最近の気がしてなりません。 本日はCakePHP 3 の新しいRoutingで凄い便利だったものをご紹介致します。 抜粋:ルーティングは URL をどコントローラーのアクションと関連付けてマッピングするか決める機能です。 ルーティングより抜粋 例えば /login にアクセスが有った場合にAccountsコントローラのloginメソッドを実行するなどの指定が可能です。 CakePHP2 の場合は以下のように設定していました。 //CakePHP2の場合 Router::connect( '/login', ['controller' => 'accounts', 'action' => 'login'], [] //option ); CakePHP3の場合も基本
セッション¶ class SessionComponent(ComponentCollection $collection, array $settings = array())¶ CakePHP の SessionComponent は、複数のページにわたってクライアントのデータを継続して 保持する方法を提供します。このコンポーネントは $_SESSION 変数に関連した いくつかの便利なメソッドを持つラッパのように振舞います。 CakePHP ではセッションの複数の方法で設定を行えます。 詳しくは セッションの設定 を参照してください。 セッションデータを伝達する¶ SessionComponent はセッション情報を伝えあうために使われます。 ユーザへ出力するメッセージの作成はもちろんのこと、基本的な CRUD 機能が含まれます。 覚えておきたいことは、 ドット記法 により配列構造で
cakephp3で "ログイン状態の保持" の機能を実装してみました。 ※Quick Start Guide http://book.cakephp.org/3.0/en/quickstart.html に追加する感じで 方針 cookieとデータベースにログインキーを保持 両者が一致したらログインとする テーブル auto_loginテーブルを作ります CREATE TABLE `users` ( `id` INT(11) AUTO_INCREMENT PRIMARY KEY, `email` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `created` DATETIME, `modified` DATETIME ); CREATE TABLE `auto_login` ( `user_id` INT(11) UNS
fukasawaです。こんにちは。急に暖かくなりましたね。湿気が気になります。 CakePHPにはConfigureというクラスがあり、これを使用することでアプリケーション全体で使う変数を一箇所に定義しておくことができます。 CakePHP3にはconfig/app.phpという設定ファイルがデフォルトで存在しており、この中でデータベースの接続設定やログの出力設定等について定義されているのですが、このapp.phpもConfigureクラスを使用して読み込まれています。 例えば、app.php以外の任意の設定ファイルを追加したい場合、PHPファイルを新たに作成し、app.phpと同様にConfigureクラスを使用して読み込むことになるのですが、読み込む設定ファイルの形式としてINIファイルやJSONファイルを使用することができるようです。今回はその設定方法について見てみたいと思います。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く