Recommended omoon.org の裏側 〜FuelPHP の task 活用例〜
15分でCakePHPを始める方法(Nseg 2013-11-09 )
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
FuelPHPで3種のprofilerを使ってみた
Mojoliciousをウェブ制作現場で使ってみてる
Everyday Life with clojure.spec
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
最新PHP事情 (2000年7月22日,PHPカンファレンス)
CPANの依存モジュールをもう少し正しく検出したい
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
Modern PHP Programming @ PFI Seminar
名前空間.php @Nagoya.php 2013.01.19
More Related Content omoon.org の裏側 〜FuelPHP の task 活用例〜
15分でCakePHPを始める方法(Nseg 2013-11-09 )
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
FuelPHPで3種のprofilerを使ってみた
What's hot (18) Mojoliciousをウェブ制作現場で使ってみてる
Everyday Life with clojure.spec
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
最新PHP事情 (2000年7月22日,PHPカンファレンス)
CPANの依存モジュールをもう少し正しく検出したい
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
Modern PHP Programming @ PFI Seminar
Similar to あらためてPHP5.3 (20) 名前空間.php @Nagoya.php 2013.01.19
PSR-1 と PSR-2 を5分でざっくり理解する
PHPの今とこれから2024 at PHP Conference Japan 2024
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
More from Masashi Shinbara (20)
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
How to learn Laravel5 application from Authentication
認証機能で学ぶ Laravel 5 アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
PHPコードではなく PHPコードの「書き方」を知る
Heroku で作る
スケーラブルな
PHP アプリケーション
Laravel ユーザなら知っておくべきAuthオートログイン
あらためてPHP5.38. PHP5.3のソース
<?php
namespace appcontroller; namespace
use OneByOnelibLog;
const T_USER = 't_user';
class UserController extends OneByOnelibBasicController {
public function __construct() {
$values = range(1, 50);
array_filter($values, function($value) {
return ($value % 5 == 0);
});
}
}
9. PHP5.3のソース
<?php
namespace appcontroller; namespace
use OneByOnelibLog;
const T_USER = 't_user'; 定数
class UserController extends OneByOnelibBasicController {
public function __construct() {
$values = range(1, 50);
array_filter($values, function($value) {
return ($value % 5 == 0);
});
}
}
10. PHP5.3のソース
<?php
namespace appcontroller; namespace
use OneByOnelibLog;
const T_USER = 't_user'; 定数
class UserController extends OneByOnelibBasicController {
public function __construct() {
$values = range(1, 50);
array_filter($values, function($value) {
return ($value % 5 == 0); クロージャ
});
}
}
37. 先頭のバックスラッシュ
namespace
<?php
namespace OneByOnemain;
付けてない
use OneByOnelibFoo;
use OneByOnelibFoo as libFoo;
require 'namespace.php';
class Bar {
}
$bar = new Bar();
$foo1 = new OneByOnelibFoo(); 付けてる
$foo2 = new Foo();
$foo3 = new libFoo();
$class = 'OneByOnelibFoo'; 付けてない
$foo4 = new $class();
38. 先頭のバックスラッシュ
namespace
<?php
namespace OneByOnemain; 付けない
use OneByOnelibFoo;
use OneByOnelibFoo as libFoo; どちらでも良いが、付けない
require 'namespace.php';
class Bar {
}
$bar = new Bar();
$foo1 = new OneByOnelibFoo(); 付ける
$foo2 = new Foo();
$foo3 = new libFoo();
$class = 'OneByOnelibFoo'; どちらでも良いが、付けない
$foo4 = new $class();
44. PSR-0
namespace
PSR-0
https://github.com/php-fig/fig-standards/blob/master/
accepted/PSR-0.md
51. useで値をカプセル化
クロージャ
• use で値をカプセル化
<?php
class Foo {
public static function createMulti($v) {
return function($a) use ($v) {
return $a * $v;
};
}
}
$func1 = Foo::createMulti(1);
$func2 = Foo::createMulti(2); createMultiの引数で掛け算
var_dump($func1(10));
var_dump($func2(10));
54. メソッド内でコード共有
クロージャ
<?php
class Foo {
public function something() {
/*
似たような処理
*/
/*
似たような処理 似たような処理をまとめる
*/
}
}
55. メソッド内でコード共有
クロージャ
<?php
class Foo {
public function something() {
$this->共通処理();
$this->共通処理();
}
protected function 共通処理() {
別メソッドに切り出す
/*
似たような処理
*/
}
}
56. メソッド内でコード共有
クロージャ
<?php
class Foo {
public function something() {
$func = function() {
/*
似たような処理
*/
};
クロージャにまとめる
$func();
$func();
}
}
59. 継承クラスのクラス定数
LSB
<?php
class Foo {
const TABLE_NAME = 'Foo';
public static function something() {
return self::TABLE_NAME;
}
}
class Bar extends Foo {
const TABLE_NAME = 'Bar';
}
var_dump(Bar::something());
60. 継承クラスのクラス定数
LSB
<?php
class Foo {
const TABLE_NAME = 'Foo';
public static function something() {
return self::TABLE_NAME;
}
}
class Bar extends Foo {
const TABLE_NAME = 'Bar';
}
"Bar" ではなく"Foo"
var_dump(Bar::something());
61. 継承クラスのクラス定数
LSB
<?php
class Foo {
const TABLE_NAME = 'Foo';
public static function something() {
return static::TABLE_NAME;
「self」を「static」に
}
}
class Bar extends Foo {
const TABLE_NAME = 'Bar';
}
var_dump(Bar::something());
62. 継承クラスのクラス定数
LSB
<?php
class Foo {
const TABLE_NAME = 'Foo';
public static function something() {
return static::TABLE_NAME;
「self」を「static」に
}
}
class Bar extends Foo {
const TABLE_NAME = 'Bar';
}
var_dump(Bar::something()); "Bar"
63. 継承クラスのクラスメソッド
LSB
<?php
class Foo {
public static function something() {
echo "Hello,".self::hello();
}
protected static function hello() {
return "Foo!";
}
}
class Bar extends Foo {
protected static function hello() {
return "Bar!";
}
}
Bar::something();
64. 継承クラスのクラスメソッド
LSB
<?php
class Foo {
public static function something() {
echo "Hello,".self::hello();
}
protected static function hello() {
return "Foo!";
}
}
class Bar extends Foo {
protected static function hello() {
return "Bar!";
}
}
"Hello, Foo"
Bar::something();
65. 継承クラスのクラスメソッド
LSB
<?php
class Foo {
public static function something() {
echo "Hello,".static::hello(); 「self」を「static」に
}
protected static function hello() {
return "Foo!";
}
}
class Bar extends Foo {
protected static function hello() {
return "Bar!";
}
}
Bar::something();
66. 継承クラスのクラスメソッド
LSB
<?php
class Foo {
public static function something() {
echo "Hello,".static::hello(); 「self」を「static」に
}
protected static function hello() {
return "Foo!";
}
}
class Bar extends Foo {
protected static function hello() {
return "Bar!";
}
}
"Hello, Bar"
Bar::something();
68. その他
• __DIR__ / __NAMESPACE__
• ?:
• Nowdoc
• goto
• Phar
• Reflection(Method¦Property)::setAccessible()
and more...
72. 参照
• PHPマニュアル
「PHP5.2.x から PHP5.3.x への移行」
http://jp2.php.net/manual/ja/migration53.php
• PSR-0
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
• IBM developerWorks
http://www.ibm.com/developerworks/jp/opensource/library/os-php-5.3new3/
http://www.ibm.com/developerworks/jp/opensource/library/os-php-lambda/