![Fusic Tech Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/c0514b5a0fd19ea239fdcf08073ed504b322362c/height=288;version=1;width=512/https%3A%2F%2Ftech.fusic.co.jp%2Fog-image.png)
REST¶ 最近のアプリケーションプログラマーは、サービスのコア機能を ユーザーにオープンにする必要があると気付き始めています。 簡単に提供でき、自由にコア API にアクセスできれば、広く受け入れられ、 マッシュアップされたり、簡単に他のシステムと統合できます。 簡単にあなたの作ったアプリケーションロジックにアクセスさせる方法は色々ありますが、 REST はその中でもすばらしい方法でしょう。とてもシンプルで、大抵は XML ベース (SOAP のようなものではなく、単純な XML のこと) で、HTTP ヘッダーによって制御されます。 CakePHP を使って REST の API を提供するのはすごく簡単です。 簡単なセットアップ¶ REST を動かすための手っ取り早い方法は、 config/routes.php ファイルに リソースルート をセットアップするための数行を追記することで
CakePHPとReact.jsを共存させる 最近流行りのフロントサイドレンダリングですが、CakePHPと合わせてどうしても使いたい場面に遭遇します。 ようは、決済処理などはクライアントに見えない形にしたいのでバックエンド(CakePHP)で、残りはフロントサイドみたいな。 今まで拝見した記事だとnpmと別途で動かしているものが多いので需要があるのではないかと思って記事にしてみます。 あと個人的にMaterialUI (http://www.material-ui.com/) を動かしたかったのもあるので。 とりあえずCakePHPを入れる。 下記の記述のようにCakePHPをインストールします。 https://book.cakephp.org/3.0/ja/installation.html PHPのインストールは省きます。Apacheなどを含めてyumやapt-getなどでインスト
Inflect me! Running on CakePHP 3.5.10
この記事は、CakePHP3 Advent Calendar 2016 25日目の記事ではありません。 まとめ Controller/Componentにビジネスロジックを書かない カスタムfindを活用しよう 1テーブル1モデルではなく、場面によってモデルクラスを増やそう Modelless Form / Tableless Modelを活用しよう beforeSave/afterSaveは諸刃の刃 Behaviorにビジネスロジック書くのもあり View層ではView Cell/View Blockを活用しよう CRUDプラグインお勧め この記事を書いた動機 CakePHPにおいてビジネスロジックに該当するものをComponentに書くという記事を見かけるたびに、それはアンチパターンじゃないのと感じている日々。 ビジネスロジックをどこに書くべきか、共通処理をどこに書くべきかというのを、
使い方 app/Controller/Component配下にComponentクラスを継承したクラスを作成する。 <?php //読み込み忘れずに App::uses('Component', 'Controller'); //クラス名にはComponentをつける class FooComponent extends Component { public function bar($one,$two){ return $one + $two; } } 通常のComponent同様、コントローラーから使用できる。 $componentsに使用するコンポーネントを定義する。「$this->コンポーネント名->メソッド」で呼び出す。 (定義する際も、呼び出す際もクラス名からComponentを除いて記述する。) <?php App::uses('AppController', 'Contro
こんにちは!乃木坂46の西野七瀬さんと誕生日が同じサーバーサイドエンジニアの@itoshoです。 僕は元々PHPerなのですが、ここ1〜2年くらいRubyを書く機会が多かったこともあり、最近はRubyでいいな!と思った考え方や技術をPHPに輸入することにハマっています。 そこで今日は少し古い記事になるのですが DHHはどのようにRailsのコントローラを書くのか を参考にして、Ruby on Rails(以下Rails)の産みの親であるDHHさんのコントローラーの書き方をCakePHPに取り入れてみたいと思います。 DHHさんのコントローラーの書き方 そこに至るまでの考えなどの詳細は元記事をご覧いただければと思いますが、要約すると、 RESTの原則に従う場合、コントローラはデフォルトのCRUDアクションだけを使い、その他のアクションは新たに専用のコントローラを作成する。 という考え方になり
ScaffoldとBakeはどちらも開発をサポートする機能です。 どちらも「ひとつの画面を用意するのに、モデル作って、ビュー作って、コントローラ作って...と、似たようなコードを何度も書きたくない」というプログラマの希望を叶えてくれるありがたい機能です。ただ、個人的には昔「何が違うのか?」と悩みました。 似て非なるこの2つの機能について、メリット・デメリットを理解して使いどころを分けましょう。 Scaffoldについて 簡単なコントローラをひとつ用意するだけで、テーブルの一覧・追加・削除・編集画面などを簡単に実装することができるといった機能です。 具体的には以下のようにコントローラを用意すると、shopsテーブルの一覧・追加・編集・削除ができる管理画面を実装されます。
CakePHP 2.0系でValidation時のエラーメッセージを日本語化する 投稿日: 2013/3/28 14:41 CakePHPにはデータをPOSTした際に各項目をModelに定義された入力制約に基づいてチェックし、 制約違反になった場合にエラーメッセージを表示してくれる機能があります。 CakePHP1.3まではうまく動かなかったので適当にModelの関数をカスタムして 泥臭い方法でどうにかこうにか動かしていたのですが、 2.0系にアップデートするとまた動かなくなったため抜本的にやり方を見直しました。 あまりドキュメントが整理されていないのか他の人の同じような記事を見なかったので 後続の方のために残しておきます。 まずはModelの制約を記述します。 [php] class MyModel extends AppModel { public $validate = array(
国際化と地域化¶ あなたのアプリケーションをより多くのユーザーに届けるのに最も良い方法の一つは、 複数の言語に対応することです。これは、しばしば気が遠くなるような作業になります。 しかし、CakePHP の国際化と地域化の機能は、これを容易にします。 まずは、いくつかの専門用語について理解しましょう。 国際化 (internationalization) とは、あるアプリケーションを地域化できるようにすることです。 地域化 (localization) とは、あるアプリケーションを特定の言語や文化での表現( すなわちロケール (locale)) に適応させることです。国際化と地域化は、それぞれ「i18n」と 「l10n」というように省略されます。「internationalization (国際化)」の最初と最後の文字の間に 18文字あるから「i18n」となり、「localization
Docker Compose のドキュメントに Django, Rails, Wordpress の開発環境にDocker Compose を利用する例が載っています. PHPのWebアプリケーションフレームワークのCakePHPにどう適用するのか試してみました. 結論からいうと, ちょっと手直しすると, 他のフレームワークへの転用も簡単そうです. アプリケーションとフォルダの構成 OSはUbuntu, データベースにMySQL, デバッグ用のWebサーバにはPHPのビルトインサーバを使う構成としています. 以下で述べる Dockerfile と docker-compose.yml は,同じフォルダ cakephp-app のなかに置いてあるものとします. Dockerfile Dockerfileの記述例を示します. FROM ubuntu RUN apt-get update \ &
たとえば 以下のような WHERE句を書きたい場合 FROM "tests" AS "Tests" WHERE "Tests"."enable" = TRUE AND "Tests.modified" <= ( now()::date + ( add_days || 'days')::interval )::date ORDER BY modified DESC query()を使えば自由に書けるが、取得したデータ配列の取得方法が違う 以下のような params を指定する。 $params = array( 'conditions' => array ( 'enable' =>'true', array( "modified <= (now()::date + ( offset_days || 'days')::interval )::date)" ), ), 'order' => ar
はじめまして、セプテーニ・テクノロジー(ベトナム・ハノイ)駐在の鎌田です。 昨今、社内グループにおける新規サービス開発の現場においても、RailsのRspec、ScalaのScalaTest・Specs2等々、 自然言語に近いテスト表記を用いた近代的なテスト駆動開発が主流になってきてます。 とは言え、数年前から運営中のサービス(=テストコードが無かったりする、いわゆるレガシーコード)だと、当然、既存のフレームワークの中で選択可能なテストツールの種類も限られてきます。 そんな中、今回はあえて(?)今のトレンドから若干離れてる気がしなくもないですが、CakePHP × PHPUnitな記事を書こうとおもいます。 想定の環境としては、あらかじめCakePHP 2.xが入ってる前提です。 1.PHPUnitのインストール Pearからインストールする方法が一般的ですが、Pearから最新のPHPUn
コンポーネント¶ コンポーネントはコントローラ間で共有されるロジックのパッケージです。 CakePHP には、様々な共通のタスクを支援するための素晴らしいコアコンポーネントが用意されています。 あなた独自のコンポーネントも作成できます。もしコントローラ間でコピー&ペーストしたい箇所が あった場合、その機能を含むコンポーネントの作成を検討しましょう。コンポーネントを作成することで、 コントローラのコードを綺麗に保ち、プロジェクト間のコードの再利用につながります。 各コアコンポーネントの詳細はそれぞれの章で説明します。詳しくは、 コンポーネント を参照してください。 ここでは、独自のコンポーネントを作成する方法を紹介します。 コンポーネントの設定¶ コアコンポーネントの多くは設定を必要としています。コンポーネントが設定を必要としている例は、 認証 や Cookie などにあります。 これらのコ
トークンが一致しないと SecurityComponent の blackHole メソッドが実行されます。このメソッドでは header('HTTP/1.0 404 Not Found'); を出力して exit します。(画面は空白) 任意の処理を実行したい場合は blackHoleCallback でコールバック関数を指定します。 設定できるのは同じコントローラ内のアクションのみになります。 function beforeFilter() { $this->Security->blackHoleCallback = "securityError"; $this->Security->requireAuth('login'); } function securityError() { die("security error!"); } トークンチェックをするアクションを複数指定するとき
<?php App::uses('AppController', 'Controller'); /** * Test Controller * */ class TestController extends AppController { public function index() { App::import('Model','ConnectionManager'); $db =ConnectionManager::getDataSource('default'); $result=$db->query('select * from datatable1'); echo "<pre>"; print_r($result); echo "</pre>"; exit(); } } ConnectionManager::getDataSource()で指定してる default とは Con
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く