PHPで記述されたwebアプリケーションフレームワーク。 Ruby on Railsの影響を受けている。 1.x系に対応するPHPのバージョンは4または5。 2.x系はPHP5への最適化を図るため、PHP4への対応が打ち切られるとともに、例外処理、テスト、命名規則など大幅な改修がなされた。 2013年1月15日現在の最新版は2.2.4、対応するPHPのバージョンは5.2.8以上である。
概要 CakePHP には独自に定義したカスタム Validation を使う方法がいくつかある。 Default のバリデーションプロバイダーを差し替えることで、アプリケーション全体で使うようなルールを追加しやすくする。 例えば「会員IDは 0 埋めを含む8桁の数字」のようなカスタムバリデーションを使う場合、下記のような形で呼び出せるようにする。 $validator = new AppValidator(); $validator->memberId('member_id', 'member_id は8桁の数字で指定してください'); Validation を拡張したクラスを作る Vali…
今回は迷ったところをとりあえず書いてみます。CakePHPではランディングページはどのコントローラに作るか?というテーマです。 結論 終わりに 【自分の環境】 macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 結論 結論、自分の場合はPagesControllerです。PagesControllerと言えば、静的なコントローラです。変数などは設置できません。これが合ってるかどうかは正直わかりません。ですが、特に動的な処理が必要なかったので、PagesControllerにしました。ただ、サービスによっては、動的なコントロ…
CakePHPのラジオボタンですが、ヘルパーで設置すると縦並びになって、個人的に非常に嫌でした。そこでこのラジオボタンを横並びにする方法を説明していきます。結論から言うと、自分でCSSを書くのが一番手っ取り早いです。自分でdisplay: flex;などして、上書きしてしまう方法です。もともとのコードをいじるとなると、かなり細かい作業になってしまうので、オススメしません。 元々のかんじ 書き換えたビューテンプレート CSSを読み込む CSSを書く 終わりに 【自分の環境】macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 …
パスワードのハッシュ化って超大事ですよね。セキュリティの基本のキと言ってもいいのではないでしょうか。今回はCakePHP3.8でパスワードをハッシュ化する方法を説明します。 User.php(エンティティ)をいじる おまけ 終わりに 【自分の環境】macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 User.php(エンティティ)をいじる Usersテーブルというテーブルを作成している前提ですが、User.php(エンティティ)をいじることで再現できます。ディレクトリ的にはsrc/Model/Entity/User.php…
マイグレーションコマンドでミスってしまうことありますよね。stringと書くべきところをvarcherと書いてしまったり。integerと書くべきところをintと書いてしまったり。そういうミス表記の時にどうなるかというのを実験して、記事に書いてみようと思います。 ミスると… 教訓 終わりに 【自分の環境】macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 ミスると… 試しにこのコマンドをターミナルで打ってみます。 ./bin/cake bake migration CreateUsers2 name:string mail…
テーブルを作成した後に、カラム設定を変更したいってことありますよね。文字数を変更したいとか、データ型を変更したいとか。当たり前のことなのですが、割とあります。今回はその方法について説明していきます。(目次) ①マイグレーションコマンドをする ②up()とdown()に書き換えることでロールバックできるようにする 終わりに 【自分の環境】macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 ①マイグレーションコマンドをする まずはマイグレーションコマンドです。macOSの場合で説明しますが、以下のようなかんじです。 ./bin…
データベース設計をしていてunique制約を付けたいカラムってありますよね。例えばユーザー同士で被らせたくないメールアドレスだったり、場合によっては名前などもそうなると思います。CakePHP3でできるunique制約の付け方を説明します。(目次) マイグレーションファイルをいじればできる 終わりに 【自分の環境】macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 マイグレーションファイルをいじればできる マイグレーションファイルをいじります。説明として妥当かどうか微妙ですが、ここで注意なのが、unique制約はインデック…
企画と基本設計、詳細設計が終わり、いよいよ次はテーブル作成。当たり前のようにマイグレーションコマンドをしようと思いましたが、できず。①マイグレーションプラグインを読み込む ②データベース設定がMAMP用にするこれらを押さえれば、MAMPのCakePHP3.8でマイグレーションできるようになりました。(目次) ①マイグレーションプラグインを読み込む ②データベース設定がMAMP用にする 終わりに 【自分の環境】macOS Catalina PHP7.4.2 CakePHP3.8 MAMP5.7 Apache2.2 MySQL5.7 ①マイグレーションプラグインを読み込む まず「マイグレーションプ…
Webアプリを作るにあたって、まずMAMPでCakePHP3.8の環境構築がしたいと思いました。 MAMPとは、基本的にインストール作業を行うだけで、特に初期設定も必要なく、PHPなどを使用したWEB開発が手軽に始められるツールです。 そしてCakePHPですが、RailsからインスパイアされているPHPのフレームワークです。こちらも規則を守れれば、手軽にWebアプリが作れると言われています。なぜ3系なのかと言えば、自分が読んだ下記の教材で取り上げられてたのが3系だったからです。CakePHP 超入門 | 掌田津耶乃 | 工学 | Kindleストア | Amazonもっと言えば、なぜ3.8の…
1. 開発環境 個人商店のお客様に、小さな売上管理アプリを提供するってことになりまして。 下記環境でコツコツ開発を続けています。じっくり作ってるうちに、どんどんフロントエンド技術が進化しちゃって使ってるフレームワークが古びてゆき困る。早くリリースせねば。backend: CakePHP ver. 2.10.19 (.lib/Cake/VERSION.txtで確認) front: CakePHPの標準view (*.ctp の拡張子) + jQuery + vue.js server: ローカルでの確認はとりあえずdocker上せっかくお勉強しているvueを使いたいんで、伝統的javascrip…
はじめに こんばんは。 今回も前回に続き、php-mysql-engineへの貢献を続けております。 なんとかしてcakephp3でも使えるようにという感じで、頑張っております。 本題 今回は、NoticeErrorが起きたのでそちらの対応を行いました。 例えば以下のようなSQLの場合 CREATE TABLE `orders` ( `id` INTEGER(11) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` INTEGER(11) UNSIGNED, `price` INTEGER(11) UNSIGNED NOT NULL DEFAULT 0, …
簡単に自己紹介します。 現在の仕事 新人エンジニア1年目です。 コロナ禍の2020年6月から、都内のスタートアップ企業で正社員Webエンジニアとして働いています。 普段は受託のスクラムチームでアジャイル型開発を行なっています。自社のサービスも持っている会社なので、社内副業としてそちらの開発をしていることもあります。 経験案件数は働き始めてから現在2件目で、2021年の3月まではずっと同じ会社さんの受託案件に参画していました。 コロナの影響もあり、現在はフルリモートで働いています。スクラムなので完全に自由とはいかないですが、フレックスタイムなので比較的自由が効く環境だと思います。 働く人も穏やか…
去年に引き続きPHPerKaigiにコアスタッフ・発表者として参加してました。 phperkaigi.jp そういえば一年前にこんな記事も書いたりもしてました。 www.phper.ninja 去年の暮れから今年にかけて体調を崩しておりタイミング的にぎりぎりだった気もします。(在宅でPHPカンファレンスでは懇親会担当をやっていました) phpcon.php.gr.jp なんとか発表者として自分の発表もできました。 tadsan.fanbox.cc 今回の発表準備の過程では、まあまあ実用的なライブラリが副産物として生まれました。 github.com コンテナの方は学習用途なので、あまり実用的で…
BASE株式会社 ServiceDev Payment Group 所属の田仲です。 現在はエンジニアリングマネージャーを担当していますが、以前はサーバーサイドエンジニアとして開発をしていました。その頃の経験を紹介したいと思います。 BASEのエンジニアはPM・ディレクターから要件を聞き、設計を行います。 仕様や設計を元にサーバーサイドエンジニアはサーバーサイドの実装し、フロントエンドに関してはフロントエンドエンジニアが実装しています。 少し前のプロジェクトになるのですが、「送り状データダウンロードApp」の開発プロジェクトを担当した際にサーバーサイドだけではなくフロントエンドの開発にも携わる…
はじめに こんばんは。 php-mysql-engineの話を聞いて、ワクワクしながら試してみました。 https://inside.pixiv.blog/2021/02/18/123000 https://speakerdeck.com/o0h/phperkaigi2021-lightning-talk 結果、cakephp3だとうまく行かないことがわかりました。 検証した環境は、 3.9.8 でした。 本題 結果的にうまく行かなかったのですが、ハマった箇所は色んな場所でした。 最初は ドライバを用意して、FakePDOに書き換えるだけでイケルと思いましたが、甘かったです。 最初に用意したド…
KAEDE WORKS フクダデンキHP(LP) fesa.netlify.app 勤務していた Fukuda Electick System Arts の ウェブサイト SP 対応に仕上げた。 Logo や favicon そして色合いは デザインができる理学部の後輩に任せた github.com ソースコードはこちら。 PageSpeed Insights パフォーマンスはこちら。辛口採点のここで40点出るのはかなり高いと思う 要件。なぜ作ったか。 3 年間バイトしていた フクダ電気六角橋店の 2000 年ごろからアップデートがされていない ホームページビルダー製のページのリニューアル。昔…
はじめに 株式会社ラクス チャットディーラー開発課のエンジニアRakusMoritaです。 2021年3月26日(金)~3月28日(日)開催のPHPerKaigi2021に、ラクスエンジニア7名が参加してきました。 phperkaigi.jp PHPer(ペチパー)によるPHPerのためのこの大規模イベントは、今年はオンラインでの開催でした。 オンラインでありながらも、豪華な登壇者、絶えず流れるコメント、主催者の勉強になるコントなどなど・・・ お祭り騒ぎのような雰囲気伝わってきて、ワイワイと非常に楽しい勉強会でした。 ラクスは当イベントのスポンサーとして参加させていただいている他、社内から2名…
PHPのフレームワークって何?使うメリットを知りたい。今はどんなPHPフレームワークが需要あるの? WEB系システムエンジニアがこの悩みにお答えします。 この記事を書いている僕は、WEBコンサルタント兼SEとしてシステムやマーケティングを担当しています。PHPのフレームワークも一通り使ったことがあり、お気に入りはLaravelです。 PHPプログラマーを目指すならば、フレームワークは必ず学習したほうがいいです。 僕は現在、WEB系システムエンジニアとしてPHPの仕事もしていますが、周りのエンジニアもフレームワークかWordPressのどちらかを使うのが一般的です。 需要が高く人気のPHPフレー…
はじめに 毎年恒例オールアバウトグループの新卒1年目エンジニアが投稿する企画「テックブログ新卒週間2021」を開催します! 今回は、オールアバウトナビ(以下からナビで省略します)システム部の@monpeiがお送りします! ナビの詳細は下記のリンクからご確認いただけます。 www.allaboutnavi.co.jp 昨年12月のテックブログ の記事ではナビに入社から12月までの、業務内容や自分が感じたことについての記事を投稿させていただきました。 前回の記事の続編でもあるので合わせて読んでいけると嬉しく思います! allabout-tech.hatenablog.com 今回の内容は以下のこと…
概要 CakePHP にはアップロードファイル用の validator が用意されていて便利。 ただテストをするときにちょっとめんどくさい点が2つある。 1つ目はファイルをアップロードするリクエストを作ること。 リクエストするデータとは別に $_FILES にも情報を突っ込んでおかないと、Controller で \Cake\Http\ServerRequest::getUploadedFile あたりを呼び出した時に値が取れなくなる。 もう1つは is_uploaded_file を stub にする必要があること。 uploadedFile の Validation はアップロードファイル…
phperkaigi.jp 3/26〜28の3日間で開催されたPHPerKaigiにCFPを通すことができたので登壇してきました。 今回のネタ 今回はDependency Injectionに焦点をあてて、今こそ理解するDI(Dependency Injection)というタイトルにしました。TimeTableを改めて見てみると、僕以外にもDIの話をされる方がいらしたので、そんな中で採択されたのはとても嬉しかったです。 テーマをDIにした理由 CakePHPにDIコンテナが実験的に導入されるにあたって、DIを正確に理解しておきたかった。 PHPに限定した話にしたくなかった。 理由は2つあります…
はじめに PHPerKaigi 2021 に参加しました。 1日目はあいにく別件の用事があり参加できませんでしたが、タイムシフトで後日参加いたします。 2日目の参加メモを公開します。 ※個人的なメモですので、支離滅裂かと思いますがご了承くださいませ 聴講セッション 無駄な物をなるべく作らないリプレイス戦略 11:50 Track B 今こそ理解するDI(Dependency Injection) 14:10 Track A DNSを制する者はインターネットを制す!DNS世界 14:50 Track B 無駄な物をなるべく作らないリプレイス戦略 ママリ 記事の管理 記事のCMS 技術スタック P…
PHPerKaigi2021に「PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう」と題して応募したプロポーザルが採択されまして、お話をする機会をいただきました。 その内容について触れるエントリーです。 (今回はLTでもしゃべるよ!!!!!!) ↓プロポーザル fortee.jp ↓ 資料
こんにちは、GraciaのCTOの林です。 前回の記事ではGraciaの開発体制について紹介しましたが、今回はGraciaが採用している技術スタックについて紹介します。