SlideShare une entreprise Scribd logo
1  sur  40
PHPとCakePHPを触っていて
気づいたこと
2019/06/18
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
萩原圭市
自己紹介
自己紹介
・萩原圭市(Keiichi Hagiwara)
・GVA TECH株式会社というリーガルテックスタートアップで
Webエンジニアとして働いています。
・サーバーサイドはPHP7.2(CakePHP3.6)
PHPのよさ
型を自動的に変換してくれる
ということは
型を意識しなくても良い
つまり
初心者にとっつきやすい言語 \(^o^)/
本当にそうだろうか?
PHPの型宣言は
弱い型検査と暗黙の型変換
が行われる
むしろ型変換を正しく意識してないと
思わぬ落とし穴にはまりそう
ちなみに厳密な型検査を行いたいなら
PHP7から新機能の
declare(strict_types=1)
を使うと良い
小休憩
CakePHPとは
「設定より規約」
ところでコントローラーの
構成ってどうしてますか?
開発初期
Controller直下に
必要コントローラーファイルを
直置き
開発を進めていくと一つ問題が
…
あるコントローラーから
別のコントローラーのurlを
取得したいとき
ルーティングのメソッドとして
Router::url($url = null, $full = false)
を使います
例えば
Controller直下のファイルから
Controller直下のファイルファイルの
メソッドのurlを取得
できる
Controller直下のファイルから
Controller/Ajaxのファイルファイルの
メソッドのurlを取得
できる
Controller/Ajaxというフォルダの
ファイルから
Controller直下のファイルの
メソッドのurlを取得
できない
※CakePHP3.6でためしてます
階層が下のメソッドかつ
Controller直下ファイルには
到達できなさそう
※気になる方はCakePHP3.6の
vendor/cakephp/cakephp/src/Routing/R
outer.php
の挙動を確かめてみてください
解決策
Controllerの直下には
ファイルを直接置かず、
ディレクトリに分類することで
どこのファイルのメソッドでも
参照できるようになりました
まとめ
まとめ
・PHPは型を自動的に変換してくれる
・一方でその挙動を正しく理解していないと思わぬ挙動にはまるかも
・厳密な型変換を行うならdeclare(strict_types=1)
・CakePHPは「設定より規約」で独自のルールがある
・Controller直下にファイル直置きにしているとRouter::url()でコケる
ありがとうございました

Contenu connexe

Tendances

第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansaiHisateru Tanaka
 
Bat vb script_power_shellの単体テスト自動化
Bat vb script_power_shellの単体テスト自動化Bat vb script_power_shellの単体テスト自動化
Bat vb script_power_shellの単体テスト自動化Naoyuki Sano
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecationy-uti
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るYoshio Hanawa
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件y-uti
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacksHiro Yoshioka
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するYoshio Hanawa
 
NetBeans plugin for wordpress
NetBeans plugin for wordpressNetBeans plugin for wordpress
NetBeans plugin for wordpressJunichi Yamamoto
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Hiro Yoshioka
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックYoshio Hanawa
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界Yuuki Takezawa
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門zaru sakuraba
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015ichikaway
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るYoshio Hanawa
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情Yoshio Hanawa
 
Pythonを中心としたチーム開発
Pythonを中心としたチーム開発Pythonを中心としたチーム開発
Pythonを中心としたチーム開発Ryo Takahashi
 
「Delphiマイグレーションの現状」
「Delphiマイグレーションの現状」「Delphiマイグレーションの現状」
「Delphiマイグレーションの現状」Embarcadero Technologies
 

Tendances (20)

第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
 
Bat vb script_power_shellの単体テスト自動化
Bat vb script_power_shellの単体テスト自動化Bat vb script_power_shellの単体テスト自動化
Bat vb script_power_shellの単体テスト自動化
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacks
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
 
NetBeans plugin for wordpress
NetBeans plugin for wordpressNetBeans plugin for wordpress
NetBeans plugin for wordpress
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
 
Php非同期の技法
Php非同期の技法Php非同期の技法
Php非同期の技法
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門
 
後期講座07
後期講座07後期講座07
後期講座07
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
 
Pythonを中心としたチーム開発
Pythonを中心としたチーム開発Pythonを中心としたチーム開発
Pythonを中心としたチーム開発
 
「Delphiマイグレーションの現状」
「Delphiマイグレーションの現状」「Delphiマイグレーションの現状」
「Delphiマイグレーションの現状」
 

Similaire à あるあるLT〜サーバーサイドエンジニア〜 Vol.3

PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話gree_tech
 
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitFluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitSeiya Mizuno
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装Kenjiro Kubota
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!shinjiigarashi
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 ichikaway
 
Rのコードをキレイに見せたい
Rのコードをキレイに見せたいRのコードをキレイに見せたい
Rのコードをキレイに見せたいmangantempy
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードy-uti
 
PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022Rui Hirokawa
 
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chefNemoto Yusuke
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストOhishi Mikage
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築CROOZ, inc.
 
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~諒一 上野
 

Similaire à あるあるLT〜サーバーサイドエンジニア〜 Vol.3 (20)

PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitFluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
プログラムの高速化
プログラムの高速化プログラムの高速化
プログラムの高速化
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
2009 PHP初心者
2009 PHP初心者2009 PHP初心者
2009 PHP初心者
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
 
俺とGitHub
俺とGitHub俺とGitHub
俺とGitHub
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
 
Rのコードをキレイに見せたい
Rのコードをキレイに見せたいRのコードをキレイに見せたい
Rのコードをキレイに見せたい
 
20090801phpstudy Sanemat
20090801phpstudy Sanemat20090801phpstudy Sanemat
20090801phpstudy Sanemat
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
 
PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022
 
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chef
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
 
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
 

あるあるLT〜サーバーサイドエンジニア〜 Vol.3

Notes de l'éditeur

  1. リーガルスタートアップを修正 文字をもっと大きくする 文字がはみ出しているのを修正する
  2. ・長い目で見ると時間を節約していることになります ・規約に従うと自由に使える機能が増える ・設定ファイルを調べまわってメンテナンスするという悪夢からも 開放される
  3. Controller method prefix