At: PHPerKaigi 2023 ( https://phperkaigi.jp/2023/ ) Track A DateTime: 2023/3/25 10:20 (40min) Speaker: uzulla
![PHPの最高機能、配列を捨てよう!! / Throw away all PHP array now!!!](https://cdn-ak-scissors.b.st-hatena.com/image/square/83d4239ac965c1c5d72269bd6aef8f548f938cbf/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F084eb5db590e424595c50ec43bb2f5ea%2Fslide_0.jpg%3F24976299)
PHPerKaigi 2022 のセッション動画です。 2022/04/10(40分) スピーカー: 和田卓人 ( @t_wada ) タイトル: 予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。 本講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。 https://fortee.jp/phperkaigi-2022/proposal/ef8cf4ed-63fe-42f8-8145-b3e70054458b
PHPの現場 にて、DI 談義を行うので、頭を整理しておくためのメモです。 DI についてきちんと知りたいのであれば、参照に挙げたリンク先に有用な記事があるので、そちらを参考にして下さい。 PHP を念頭に置いてますが、Java など他言語でも大枠は同じだと思います。この内容は、いずれ整理するかもしれませんし、そのままかもしれません。 DI という言葉 「DI」が差す意味合いが、依存オブジェクトの注入だけなのか、DI コンテナによる注入を含んでいるのか、DIP まで意識しているのかが、人やコンテキストによって違っていそうで、そこを揃えてから議論しないと。— Masashi Shinbara (@shin1x1) May 19, 2017 DI について話す時に、何を差すのかが異なると話が噛み合わない。そこで、それぞれに名前を付ける。 DI パターン = 依存オブジェクトを注入することを差す
ちょっと遅れましたが、シリーズの第3回です。前回までに論じた内容をふまえて、簡単な実装を示します。↓前回までの内容はこちら。 DAOの悪夢 - PHPでデータベースを扱う(1) - 泥のように ドメイン駆動設計という救世主 - PHPでデータベースを扱う(2) - 泥のように 題材 「記事にタグを設定できるブログ」みたいなシステムを考えてみます。ブログ記事を示すEntryテーブル、タグを表すTagテーブルの二つを用意しました。MySQL WorkbenchによるER図(鳥足記法)は以下になります。 1つのEntryに対して複数のTagがある、1対多の関係です。同じTagが複数のEntryに関連するため、多対多の関係と見なすこともできそうですが、タグ程度だとあまり意味がないので、これ以上のテーブル分割はやめておきます。 Entryテーブルの主キーがentryIdと冗長な名前をしているのは、自
いよいよ、PHP の次期メジャーバージョンの PHP 7 がリリースされます。すでに、RC4 が登場しており、来月予定されている本リリースが楽しみです。 PHP 7 には幾つかの新機能が盛り込まれているのですが、その中でも気になるのが、無名クラスです。 無名クラスとは 無名クラスは、クラスの定義をすることなく、オンザフライでオブジェクトを生成する機能です。匿名関数(ネイティブクロージャ)のクラス版だと思うとイメージしやすいです。 無名クラスは、new classで、生成します。下記が、そのサンプルです。ここでは、sayメソッドを持つ無名クラスを定義して、$objectに格納しています。$object の say メソッドを実行すると、'Hello'という文字列が出力されます。 <?php $object = new class { public function say() { echo
今日はPHP界隈で大人気のDependency Injectionと、それに関連する用語について整理しておこうと思います。 以下のような状況があるのではないか?と思ったからです。 多くのPHPユーザがDependency Injection(DI)をよくわかっていない、あるいは正確に説明できません。 そして、デザインパターンである「DIパターン」とDIをサポートするツールである「DIコンテナ」を混同しています。 また、「DIパターン」と「サービスロケータパターン」をうまく区別できていません。 Dependency Injectionとは何か? Dependency Injectionとは「Dependency」を「Injection」するというデザインパターンです。 日本語では何故か「依存性の注入」と訳されており、これが混乱の元ではないかと思います。 日本語で「依存性」と言うと、「依存性は
コンピュータは数しか扱うことができません。では、どうやって文字を表しているかというと、文字に番号を割り当てて管理しているわけです。コンピュータ上で文字を扱う場合、文字は必ず整数値を持っています。 例えば、"A"は65番(16進数で0x41)、数字の"1"は49番(0x31)です(Asciiの場合)。数字の"1"が1番じゃないのが厄介ですね。 コンピュータのデータは1バイト(=8ビット)単位で表しますが、これだと255通りの文字しか扱うことができません。英数字記号くらいであれば十分ですが、日本語中国語に代表される他の言語すべての文字を表そうとするととてもじゃありませんが表現できません。 それに対しては、各国独自拡張で対応してきた経緯がありますが、全世界の文字を統一的に扱える規格の策定を目指してユニコードコンソーシアムが立ち上げられ、統一文字集合であるUnicodeの制定が行われています。 A
PHPは5.3から名前空間が導入され、名前の衝突を避けるため長いクラス名をつけることから解放されました。しかしながら、名前空間を使ったコードは、名前空間を使っていないものに比べて本当に読みやすくなっているのでしょうか? ここで例を挙げます。PHPの良質なソースコードと言えば、私はZend Framework(ZF)やSymfonyを思い浮かべるのですが、ZFのとあるクラスの冒頭を見てみましょう。 https://github.com/zendframework/zf2/blob/master/library/Zend/Mvc/View/Console/RouteNotFoundStrategy.php <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframewo
概要 rails でいう rescue_from。 各コントローラで発生し処理されなかった例外を、 AppController で一括で補足して独自の例外処理を行うためのメモ。 ポイント エラーハンドリングの方針を決める 例外ハンドラをオーバーライドして独自の例外処理を定義できるようにする データベースへの問い合わせに失敗した場合、例外を投げてログにエラーメッセージを記録する プロダクションモードで例外ハンドラが正常に動作しない対策を行う エラーハンドリングの方針を決める 基本的に復帰できない例外をハンドリングするために使用します。(必要であるなら)エラーメッセージをログに記録し、汎用的なエラー画面を出力するというのが主な機能です。 画面に出力するエラーメッセージは、小規模な業務システムを想定し、以下のようなポリシーにします。 生のエラーメッセージを出さない。 復帰できないエラーであること
We are a leading agency providing premium solutions in the area of design and development of mobile apps, custom websites and custom software. When getting a mobile app developed with us, unlike many other app development companies we provide a comprehensive service. You can expect a team of specialised strategists, graphic designers and developers to work on your web or app development project. W
(Last Updated On: 2018年8月14日)昨年のPHPカンファレンスで紹介したPORVE for PHP 開発版の公開を始めました。PROVE for PHPはこんなテストが出来ます。 PHPをアップデートしてアプリに影響が無い事を検証する PHPアプリをアップデートしても以前と同じように動作する事を検証する 使い方もとても簡単です。 テストケースの作成はブラウザからアプリを利用するだけ ロードバランサを用いて実運用サーバからのテストケースも作成可能 テストの実行はプログラムを実行するだけ 違いが在った場所はプログラムの何処か確実&簡単に判明 http://www.provephp.com/ 現状 CUIとコマンドツールでの管理のみ GUI(Web、GTK)は順次整備予定 PROVEを利用すればPHPのセキュリティパッチがリリースされた場合に、アプリケーションの動作チェック
Python Hackathon 2011.02で発表したpfffの紹介。この時点ではまだバグが多いですが有用なツールだと思います。Lire moins
If you need to parse HTML, regular expressions aren't the way to go. In this tutorial, you'll learn how to use an open-source, easily learned parser to read, modify, and spit back out HTML from external sources. Using Envato Tuts+ as an example, you'll learn how to get a list of all the articles published on the site and display them. 1. Preparation The first thing to do is to install Composer, wh
Create an RSS feeds generator in PHP - Programmer Assist 次のコードスニペットをコピペすれば、PHPでライブラリを使わずRSS2.0を素早く組み立てられます。 自作ツールにRSS2.0を軽く組み込んでみたい、っていう場合に一瞬で実装可能です。 <?php header("Content-type: text/xml;charset=utf-8"); echo '<?xml version="1.0" encoding="UTF-8"?>'; echo ' <rss version="2.0"> <channel> <title>Title</title> <link>http://website.com</link> <description>Description</description> <category>rss, feeds
Tenjin News (2012-02-16) pyTenjin 1.1.0 released (2011-11-27) rbTenjin 0.7.1 released (2011-11-24) rbTenjin 0.7.0 released (2011-04-29) pyTenjin 1.0.2 released (2011-02-22) pyTenjin 1.0.1 released (2011-02-21) pyTenjin 1.0.0 released Introduction Tenjin is a very fast and full-featured template engine available in several script languages. How fast Tenjin is? The following is a result of benchmark
はじめに PHPは、企業から個人まで、幅広い用途に利用され、Webシステムを構築するうえで無くてはならない存在となっています。昨今の経済状況から、Java一辺倒の大企業や大手SIerもPHPによる開発にシフトしてきています。 PHPは、手軽に始められるハードルの低さが魅力の言語です。HTMLと混在して、シンプルに使用するもよし、大規模なWebサービスに向けて本格的なシステム構築も可能です。 開発者の裾野が広いのと同様にコーディングツールの利用状況にも大きな差があるようです。シンプルなテキストエディタを使用する強者から有償ツールを使用する合理主義まで千差万別です。 今回紹介するEclipse+PDTは、その中間に位置する開発ツールと言えます。テキストエディタよりは、はるかに高機能です。有償ツールよりは、低機能ですが低コストです。このような素晴らしいツールが簡単に手に入れられるのですが、まだ使
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く