タグ

cakephpに関するakishin999のブックマーク (64)

  • CakePHPで開発しているけれどもMigrationsは捨ててRidgepoleを使っているはなし - Copy/Cut/Paste/Hatena

    タイトルは若干釣りです。 CakePHPにはマイグレーションツールとして、CakeDC/Migrations(CakePHP2)や、Phinxベースのcakephp/migrations(CakePHP3)があります。 とても有用ですし、CakePHP Bakerはみんな知っているツールです。自分もずっとお世話になっていました。 ただ、ちょいちょい困ることもあったので、最近はRidgepoleを使い始めています。 Ridgepole github.com Ridgepoleはクックパッド社で利用されているというマイグレーションツールです。 techlife.cookpad.com Ridgepoleは最大の利点が、1つのSchemafileを管理するだけでスキーマのべき等性を担保してくれるということです。 RidgepoleはDSL自体がRailsのActiveRecordと同じだというこ

    CakePHPで開発しているけれどもMigrationsは捨ててRidgepoleを使っているはなし - Copy/Cut/Paste/Hatena
  • 「CakePHP 3.0」リリース、ORMを刷新 | OSDN Magazine

    PHP向けWebアプリケーションフレームワーク「CakePHP」の開発チームは3月22日、最新版となる「CakePHP 3.0」をリリースした。新しいORM(オブジェクト関係マッピング)の導入をはじめ、多数の機能が加わっている。 CakePHPはMVCアーキテクチャを採用するPHP向けのWebアプリケーションフレームワーク。データベースアクセス、キャッシュ、認証などの機能を統合しており、高速な開発ができるのが特徴。容易な設定、安全性などの特徴も備える。ライセンスはMIT License。 CakePHP 3.0は、2011年に公開されたバージョン2系からのメジャーアップグレードとなる。PHPはバージョン5.4.16以上が必須となり、mbstring、intlの両拡張モジュールも必要となる。 最大の特徴は新しいORM(オブジェクト関係マッピング)の導入。Modelを大きく変更し、Tavleク

    「CakePHP 3.0」リリース、ORMを刷新 | OSDN Magazine
  • ScaleOut | Supership

    2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。件に関する詳細は、プレスリリースをご確認ください。 2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。 件に関する詳細は、プレスリリースをご確認ください。

    ScaleOut | Supership
  • PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-

    PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • CakePHP2.3のfind()に、行ロック機能を追加してみた - 株式会社CFlatの明後日スタイルのブログ

    こんにちは、株式会社CFlatです。 ※ CakePHPのコアライブラリを弄ります。CakePHPのアップデート時などには注意して下さい。また、修正は自己責任でお願いします。 PHP用のフレームワークは数多かれど、中でもそこそこ名前の挙がるCakePHP[1]。単純なWebアプリケーション(とも言えない程度のHP)を作るなら素早く実装できるのですが、ちょこっと真面目にSQLを弄り出すと、途端に不満が続出してきます[2]。 行ロックくらいは寄越せや、ってことで、微妙に古めですが手元のCakePHP2.3.1をいろいろ弄ってみることにしました[3]。DBにはMySQLを使います。 方針 ・$this->Model->find()の第二引数に 'lock' => ... という項目を追加すれば、ロックができるようにする ・'lock' => 'read' では、読み取ったデータの一貫性を保証する

    CakePHP2.3のfind()に、行ロック機能を追加してみた - 株式会社CFlatの明後日スタイルのブログ
  • ScaleOut | Supership

    2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。件に関する詳細は、プレスリリースをご確認ください。 2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。 件に関する詳細は、プレスリリースをご確認ください。

    ScaleOut | Supership
  • ScaleOut | Supership

    2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。件に関する詳細は、プレスリリースをご確認ください。 2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。 件に関する詳細は、プレスリリースをご確認ください。

    ScaleOut | Supership
  • CakePHP+Jenkinsによるアジャイル開発 #phpmatsuri

    2012/11/3に博多で行われたPHPMatsuri2012で話をした際のスライドです。CakePHPとタイトルにありますが、CakePHPの話はほとんどありませんw。内容は過去のワンクリックデプロイ勉強会の再構成です。

    CakePHP+Jenkinsによるアジャイル開発 #phpmatsuri
  • いまどきの技術本執筆環境 - 「CakePHP2実践入門」

    原稿執筆 原稿は Vim で書いて、Marked のプレビューを確認するという形で進めました。 Vim 原稿の形式は、Markdown+独自マークアップのプレーンテキストだったので、執筆陣は各自好きなツールを使うことができました。 Vim は普段から使っていて慣れていますし、技術ということでソースコードを読んだり書いたりする場面が多いので同じエディタ上でそれができるのは楽でしたね。 Markdown ということで当初は専用のエディタなども試したのですが、やはり「書く」という行為に関しては手に馴染んでいるものが一番です。 Marked Marked は Markdown 形式で書かれたファイルをプレビューするツールです。Marked でファイルを開いておくと元ファイルが変更されるとプレビュー側も連動して更新されます。 あくまでプレビューに特化したツールなので任意のエディタと組み合わせて使用

  • Yohei Yoshihara's Home Page

    MySimplePlan More Detail Magquash More Detail Previous Next

  • インストーラの作り方調査 - 趣味の延長線

    インストーラを作りたい。 できれば、サーバにソースをアップロード→ブラウザアクセス、一部データ(管理ID,パスワードなど)を入力→実行 で、できるだけ全てが済むようなインストーラを。 基的なインストーラの作り方の一例を記載した記事を見つけたので、読解しつつ、ポイントまとめ。 Writing an installer for your CakePHP application - cakebaker 上記記事の内容を踏まえて見ると、CroogoやCandyCaneインストーラが、割と容易に理解できました。 基インストーラについて フロー要約 1. route.php:app/tmp/以下に”インストール済み”目印のファイルがない場合、以下のinstallerコントローラ実行 2. indexアクション:特に処理なし。インストール開始メッセージ&ボタンでも表示するか? 3. database

    インストーラの作り方調査 - 趣味の延長線
  • 今感じていること リバースプロキシ構成になったらCakePHPのリダイレクトが無限ループ

    久々にハマったので。 ローカル環境では普通に単一サーバ構成。別の開発環境ではWebサーバの外側にリバースプロキシがあって。で、そうなるとWebサーバにとって、今は一体SSLで通信しているのかしてないのかを判別する方法が変わってくるそうで。 普通なら、 $_SERVER['HTTPS']が「on」なら「SSL」 ですけど、リバースプロキシが挟まる場合には、 $_SERVER['X-Forwarded-Proto']が「https」 になるそうで。伝聞形が多いのは自分がリバースプロキシよく知らんからです…。 で、開発環境に持っていったらリダイレクトがループしているとのこと。FireFoxだから分かったのですけど。色々調べてたら、特定URLに対してはSSLでの接続のみを許可するよーって処理をしているところが臭かったのでした。 こちらに書いてあるような処理をかましていたわけです。 [CakePHP

  • CakePHPでデバッグモード以外でもPHPのエラーログを取る超簡単な方法

    CakePHPではデバッグレベルを0としている場合、あらゆるエラーが非表示になり、CakePHPのエラーをはじめPHPのWarningやFatalエラーも記録されなくなります。 例えば、その状態で致命的なエラーが発生しても、画面が真っ白になったり、ErrorHandler::error404メソッドが実行されるだけで、どこかで能動的に$this->logなどで記録していない限り、解決につながる情報が記録されません。 そんな時、下記ブログを参考にカスタムエラーハンドラや、PHPエラーを記録する条件を定義しておくだけで、手軽にログを取ることができるようになります。 CakePHPでdebug=0の際にset_error_handler – benny毎日ラボ この中の内容で、自分も利用させて頂いている2つめの方法が手軽でよいので、紹介させて頂きます。 /app/config/bootstrap

    CakePHPでデバッグモード以外でもPHPのエラーログを取る超簡単な方法
  • CakePHP 2.0.3 が焼きあがりました(訳) - 24時間CakePHP

    訳 このCakePHPの新しいバージョンは2.0ブランチへの安定性の向上と、PHPUnit 3.6の完全な互換性、PHP5.4のサポートをもたらします。 CakePHPコアチームは迅速にCakePHP2.0.3*1が利用可能になったことを誇りに思います。前のリリースからPHPの世界に多くのことが起き、この新バージョンにはPHPフレームワークの進化し続ける世界に適応するために必要なすべての変更が組み込まれています。 大きな変更があったうちの一つは、PHPUnit 3.6が安定版になりPEARインストーラを通したデフォルトのバージョンとなったことです。この変更は多くの開発者にとって驚きとなりました。PHPUnitの主要な変更により開発者はCakePHPの組み込みテストスイートを実行するのが難しくなりました。PHPUnitの3.5と3.6の両方のバージョンで問題が起きないように2.0.3が確実に

    CakePHP 2.0.3 が焼きあがりました(訳) - 24時間CakePHP
  • Configure::writeで設定した配列をキー指定で呼び出す - UNIX的なアレ

    CakePHPで共通の設定情報を書く場合は、Configure::writeを使うことが多いです。配列が使えるのが何よりも便利。実際に使うときは、以下のような感じで。 ※自分は、app/config/bootstrap.phpあたりで設定することが多いです。 Configure::write('foo',array('bar'=>'buzz')); でも呼び出すときに配列にしちゃうと、一旦変数にいれないとならないからめんどくさいなーと思っていたのです。でも.(ドット)区切りでキー指定することができるですね〜。 Configure::read('foo.bar'); こんな感じで、読み込むことができます。便利。

    Configure::writeで設定した配列をキー指定で呼び出す - UNIX的なアレ
  • Revision Behavior - Revision control made easy | The Bakery, Everything CakePHP

  • [CakePHP] SoftDeletable Behavior で論理削除 | Sun Limited Mt.

    先日の第4回 CakePHP 勉強会で発表した内容でもあるのですが、簡単に SoftDeletable Behavior の使い方をまとめました。(少しだけ発表ないようにない追加情報もあります) SoftDeletable Behavior はソフトデリート(論理削除)を簡単に実現してくれる大変便利なビヘイビアです。論理削除とは DB から DELETE するのではなく削除フラグを設けて DELETE する変わりに削除フラグを立てて削除したことにすることです。 一番参考になるのはやはり Bakery です。英語が苦にならない方は私の説明よりも下記エントリを見る方がいいです。 Soft Deletable Behavior (Articles) | The Bakery, Everything CakePHP 勉強会で発表した資料は下記にありますので、よろしければこちらもご覧下さい。 Cak

  • WebアプリケーションフレームワークCakePHP 2.0が登場、PHP 5.2以降に対応 | OSDN Magazine

    Cake Software Foundationは10月16日、オープンソースのWebアプリケーション開発フレームワーク「CakePHP 2.0」をリリースした。PHP 5.2以降に対応したほか、多くのコンポーネントがリファクタリングさており、より使いやすくなっているという。 CakePHPPHPで書かれたWebアプリケーション開発フレームワーク。Ruby on Railsのコンセプトを取り入れたMVCアーキテクチャを持ち、高速なアプリケーション開発が可能という。MIT Licenseで公開されている。 CakePHP 2.0ではPHP 4サポートが廃止され、PHP 5.2以降をサポートするよう全コードがリファクタリングされた。これにより例外やPHP Data Objects(PDO)、Standard PHP Library(SOK)、json_encodeといったPHP 5のネイティ

    WebアプリケーションフレームワークCakePHP 2.0が登場、PHP 5.2以降に対応 | OSDN Magazine
  • CakePHP データベースを使わないアプリケーション

    CakePHPはデータベースを使用することが前提となっているので、フレームワークがデータベースへの接続を自動的に行います。ただマッシュアップ系のサービスなどデータベースを全く使用しない場合はこの機能を無効にしたくなります。 そこでCakePHPアプリケーション全体でデータベースを使わない方法です。 ちなみにこの方法では[app/config/database.php]を作成する必要もありません。 1. モデルを使わない コントローラの$usesにnull or array()を設定することによりモデルを使用しないようにできます。データベースへの接続はモデルを介して行うのでモデルを使わなければ接続処理は行われません。(セッションやキャッシュをDBに保存する場合は別ですが) <?php class HogeController extends AppController { var $uses

  • CakePHP Modelに関する6つの誤解

    CakePHPのModelはActiveRecordライクなDBアクセス方法を提供しており、さらにアソシエーションを設定することにより複数テーブルの値を同時に操作できるなど、DB操作に対するインターフェイスが数多くあります。 ただ「手軽にDB操作ができる」という印象が先行しているゆえ誤解を招くことがあるようです。 1. クラス名に対応したテーブルしか操作できない Modelのクラス名とテーブルを自動でマッピングするのはフレームワークのいわば便利機能です。デフォルトでそのような動作をするだけで、容易に変更することができます。 Model#$useTableにテーブル名を指定すれば任意のテーブルを操作できます。 <?php class Foo extends AppModel { public $useTable = 't_user'; // t_userテーブル } ?> 2. DBを使わな