PHPエコシステムに長年関与してきたことで知られるコントリビューターが JetBrains に入社。PhpStorm チームとともに PHP 言語とエコシステムの改善を目指す。
TL;DR PHPで動くファミコンエミュレータを作った php-terminal-nes-emulator画面描画は点字を使って文字出力コントローラは標準入力からfread() 経緯 2016年の2月にPHPで動くゲームボーイのエミュレータ、php-terminal-gameboy-emulator に衝撃を受けて、その実装の解説を勉強会やカンファレンスでトークしたりSoftware Design誌に書いたりしました。(*1) カンファレンスでのトークでは時間の都合もあって全体のごく一部しか話が出来ないのですが、Software Design誌では誌面をたっぷり頂いてCPU、メモリアクセス、画面表示とphp-terminal-gameboy-emulator のほぼ全域を解説出来たので満足し、その熱は落ち着いていました。 そんな中、9月に開催されたbuilderscon tokyo 201
TL;DR WordPress の functions.php に書いておくと捗ることをまとめておきます。 固定ページ判別。body に固定ページのスラッグ名を追加 body に固定ページのスラッグ名を追加。トップページは home のクラス名がつく。固定ページなどは guide about などのスラッグ名を取得しクラス名が付与される。 function pagename_class($classes = ''){ if (is_page()) { $page = get_post();//get_page()は廃止されたので使わない $classes[] = $page->post_name;//スラッグ名取得 } return $classes; } add_filter('body_class', 'pagename_class');
あまり設定することがないのでメモ的に残しておきます。設定するのに必要な項目です。まあだいたいなところですけど、自己確認用ですから。。。 いろいろなところからいいとこ取りで設定してある物をご紹介いたします。 環境によって使い分けたほうがよさそうですね。 基本的にあまり構うところ無いのですが、特にココは気をつけたいところだけ載せておきます。 php.iniの設定も一苦労です。 スポンサーリンク //Webアプリケーションで使用する文字エンコーディングを必ず指定。 default_charset = UTF-8 //すべてUTF-8で統一の場合 mbstring.language = Japanese output_handler = mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_outpu
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
今や開発環境はローカルにあるのが一般的です。OSを合わせたい場合でもVMを使えば簡単に実現できます。問題はコードが書き終わった後のデプロイではないでしょうか。どのサーバにどのコードを反映し、どんなタスクを実行するのか、ライブラリの変更があるのかなどを適切に管理する必要があります。 Ruby/Ruby on Rails界隈ではCapistranoというソフトウェアが使われることが多いです。Capistrano自体は汎用的なデプロイツールですが、PHPであればやはりPHP製のツールの方が分かりやすいでしょう。そこで今回はDeployerというPHP製のデプロイツールを紹介します。 Deployer — Deployment Tool for PHP Deployerのセットアップ Deployerはとても簡単にセットアップできます。本体をダウンロードして、パスの通ったところに配置するだけです。
symfony 1ではproject, apps, modulesのそれぞれのディレクトリの中の"lib"というディレクトリにあるクラスはすべてオートロードの対象になります。apps, modulesに関しては現在実行中のアプリケーションとモジュールのlib以下のみが対象になります。ここまでは基本です。 オートロードの内部の実装を軽く説明しておきましょう。frontendはアプリケーション名だと思ってください。 最初はプロジェクトのlib以下にあるファイルから.phpを再帰的に探します。.phpが見つかった場合、ファイルを読み込んで(file_get_contents)、class/interface定義を検索し、クラス名をキー、クラスファイルの絶対パスを値にして配列に格納します。この操作をすべての.phpファイルに適応させて、大きな連想配列を作成します。なお、プロジェクトのlibの中から
せっかく勉強会に参加するなら発表してみましょう!という話です。 Photo by Kiryu Tsukimiya 演台に立って、プロジェクタに資料を写しながら発表をする。 勉強会に良くある発表の風景ですね。あなたもこの登場人物になってみませんか? 発表のメリット 勉強会で発表するとこんな良いことがあります。 1. より深くテーマを学ぶことができる 発表するとなると、内容を考え、資料を作るでしょう。となると発表内容について、調べ、考え、まとめるわけです。この過程でより深く学ぶことができるわけです。特に初めての発表なら、失敗したくはないでしょうから(失敗しても良いんですけどね)、必死のぱっちでやるでしょう。明確な目的を持った学習は効果が高いのはあなたも経験済みだと思います。 2. 勉強会への予習ができる 1.のおまけですが、そうやって勉強会のテーマについて少しでも学習して行くと、他の方の発表も
CakePHPのModelに悩む人が多いようなので、自分なりの付き合い方(考え方)をご紹介します。 CakePHP Advent Calendar 2010の3日目です。 前日の k1LoW さんのエントリ、参考になりますね。GETのフォームをdata[]でやるとURLがすんごいことになるので、ウチでは別途対応できるライブラリを作ったりしてます。 さて、3日目の今日は書きたいネタは幾つかあったのですが、「君の当たり前に僕らは感嘆させられるんだ」の精神に従って、自分なりのModelの使い方、考え方を書いてみます。 1. 適正なインターフェイスを用意して処理をカプセル化 まず基本的な考え方。 Model(に限らずですが)では、処理単位でインターフェイス(メソッド)を用意して、実装はカプセル化しておきます。 こうすることによって、Modelを利用する側(Controllerや他のModel等)は
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ク
(Last Updated On: 2018年8月13日)PHP7が今年の秋リリースされる予定です。まだまだ多くの変更が行われる予定ですが、現状を簡単にまとめてみたいと思います。代表的な物のみ取り上げています。 ご存知ない方の為に書いておきます。現在リリースされているPHPはPHP5です。次のPHPはPHP7になり、PHP6はリリースされません。PHP6をUnicodeをネイティブ文字列としてサポートするバージョンとして開発されましたが、文字エンコーディングチェックを内部で自動的に行おうとするなど、無駄が多く遅いため破棄されました。(文字エンコーディングのバリデーションは本来アプリでするものです)このため、PHP6はスキップされ次のPHPはPHP7になります。 追記:PHP7.0は既にリリースされています。概要はPHP 7.0の概要・新機能・互換性、詳しくはマイグレーションドキュメントをご
CakePHP2系の最新版を利用しながら、3系への以降を少しでもスムーズにさせるためのメモです。 実際には非常に多くの作業を伴うことが予想されますが、可能な部分だけでも対応しておきたいところです。 このエントリは随時更新中です。気づいた時&暇な時に追加・更新していきます。 PSR-4 に準拠した名前空間の導入 CakePHP3.0 から namespase が導入され、同時に PSR-4 準拠となります。それに関連してディレクトリ構造やクラス名、ファイル名が変更されます。 これに備えたアプリケーションコードの変更は2系では基本的に不可能と思われますが、準備のために整理しておきます。 APIの廃止、変更、代替案 クラス、メソッド、変数の廃止、メソッド引数の扱いの変更、推奨されている代替案などをまとめていきます。 中には 2.x のかなり初期の段階で移行を促しているものなど、あえて書くまでもな
CakePHPコアチームはCakePHP 3.0.0の最初のリリース候補版が入手可能になったことをお知らせいたします。ベータリリース以降懸命に改善してきました。コミュニティの皆さんの助力にも感謝しています。 改善のための奔走により、ベータ3からいくらかAPIを変更しました。先のバージョンで多くの欠点が見つかったバリデーションのサブシステム関連で特に多くの変更があります。3.0.0-rc1での変更点の概要は以下のとおりです: バリデーションの改善 バリデーションプロセスは2つの段階に分かれています。最初の段階はユーザーが対面するタイプのバリデーションで、いつ、どこで実行するかという点を除けば先のリリース以降変更はありません。 先のバージョンでは、以下のように実行しました。 $article = $this->Articles->newEntity($this->request->data);
php による世界制服の崩壊 少し前に、php のworld dominationが取り消されたらしい、という話をききました。 その時はなんとも思っていなかったのですが、ちょうどblameの話に良さそうだ、と思い立ったので、そのコードがいつ入ったのかを調べてみようと思います。 修正されたコミットの検索 git でコミットをなかったことにするといったら revert でしょ!ということで、とりあえず、php world domination revertあたりでぐぐります それっぽいのが見つかりました。 [PHP-INTERNALS] Huge breach of PHP policy regarding World Domination 嬉しい事に修正コミットへのリンクが貼られているのでとんでみます https://github.com/php/php-src/commit/a90170e
PHP と HTML PHP と HTML は深く関係しています。PHP は HTML を生成し、HTML には PHP に 送信される情報が記述されています。 以下の FAQ を読む前に、どうやって 外部から来る変数を取得するかを読んでおくことは重要です。 このマニュアルにはこのトピックに関するよい例があります。 フォームから、もしくは URL から値を渡す場合にはどういった エンコード/デコードが必要なのですか? エンコードが重要になる場面はいくつかあります。 string $data という エンコードされていない文字列データを渡す場合について考えてみると、 HTML を通じて渡す場合: 文字列にはどのような値が含まれるか分からないので、 データは必ず htmlspecialchars を行い、 ダブルクオートで囲まなければなりません。 URL を通じて渡す場合: URL はいくつか
ようこそ 時代遅れの情報がウェブ上にあふれている。そんな情報を見たPHP初心者は戸惑ってしまうだろう。そして、まずい手法やまずいコードが広まってしまう。 そんなのはもうやめよう。PHP: The Right Way は気軽に読めるクイックリファレンスだ。PHPの一般的なコーディング規約、 ウェブ上のよくできたチュートリアルへのリンク、そして現時点でのベストプラクティスだと執筆者が考えていることをまとめた。 大事なのは、 PHPを使うための正式なお作法など存在しない ってこと。 このサイトの狙いは、はじめて PHP を使うことになった開発者に、いろんなトピックを紹介すること。 経験豊富なプロの人にとっても、これまで深く考えることなく使ってきた内容について、新鮮な見方を伝えられるだろう。 このサイトは、決して「どのツールを使えばいいのか」を教えるものじゃない。 いくつかの選択肢を示して、それぞ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く