PHP勉強会@東京 #58 で「入門PHP5.4」の話をしました
久しぶりのPHP勉強会でしたね!僕も通常のPHP勉強会での発表は久々だった気がします。
というわけで、入門PHP5.4という題で発表してきました。
発表資料&リンク集
Speaker Deck にあげました。
が、Speaker Deck だと、リンクがリンクにならないので、リンク集だけ補足でこちらにおいておきます!
- SessionHandler
- Traits
- Debian dotdeb
- Crocos (ぼくが作ってるノラdeb)
- さくらVPS 3/29 リニューアルだから少し待つと良いかも
- APC のソース
- Xdebug のソース
- PHP 5.3 いつまでサポートされるのか議論
Accessor の例
今日途中でコーディングしてたネタです。この Accessor Trait は、 id:Fivestar と僕が同時期にまったく同じ機能の Trait を作ってたりして、ワロタって話をしました。いや実際このあたりを作りたくなるものですね!
<?php trait Accessor { // そういやこれだと camelCase な property しか対応してないけど public function __call($name, $params) { if (strpos($name, 'get') === 0) { $attr = substr($name, 3); if (strlen($attr) > 0) { $attr = lcfirst($attr); if ($this->hasClassVar($attr)) { return $this->$attr; } throw new \LogicException(sprintf('No such field "%s"', $attr)); } } if (strpos($name, 'set') === 0) { if (count($params) !== 1) { throw new \InvalidArgumentException('error'); } $attr = substr($name, 3); if (strlen($attr) > 0) { $attr = lcfirst($attr); $value = array_shift($params); if ($this->hasClassVar($attr)) { $this->$attr = $value; return $this; } throw new \LogicException(sprintf('No such field "%s"', $attr)); } } throw new \LogicException(sprintf('Method not found "%s"', $name)); } private function hasClassVar($attr) { static $vars = null; if ($vars === null) { $vars = get_class_vars(__CLASS__); } return array_key_exists($attr, $vars); } }
で、これを use するだけで Accessor ができますねってはなし。
<?php class User { use Accessor; private $name; public function __construct($name) { $this->name = $name; } } $user = new User('aoi miyazaki'); var_dump($user->getName()); // => aoi miyazaki $user->setName('aoi yu'); var_dump($user->getName()); // => aoi yu
まとめ
- Voyage Group さんのセミナールーム広いし綺麗だし快適
- Ajito いいなー
MyMR、Phake、懇親会も楽しかったです!最後に、会場を貸してくださった Voyage Group さん、幹事の gusagi さんありがとうございました。