SlideShare ist ein Scribd-Unternehmen logo
1 von 73
あらためてPHP5.3

  2011/11/24 kphpug
      @shin1x1
• 新原 雅司(しんばら まさし)
 @shin1x1

• 1 1株式会社
• Shin x bloghttp://www.1x1.jp/blog/



• PHP / 勉強会 / MotoGP / PCX
Agenda

1. PHP5.3について

2. PHP5.3の新機能

- namespace
- クロージャ
- LSB
3. まとめ
PHP5.3について
PHP5.3

• 2009/06リリース

• PHP5.2から大きな機能追加
 (PHP6からのバックポート)

• RHEL6 / CentOS6 標準RPM

• 5.3フレームワーク充実
PHP5.3未満のソース
<?php
require_once 'OneByOnelibLog.php';
require_once 'OneByOnelibBasicController.php';

define('T_USER', 't_user');

class UserController extends BasicController {
  public function UserController() {
    $values = range(1, 50);

        array_filter($values, array('UserController', 'match'));
    }

    public static function match($value) {
      return ($value % 5 == 0);
    }
}
PHP5.3のソース

<?php
namespace appcontroller;

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);
        });
    }
}
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);
        });
    }
}
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);
        });
    }
}
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);                クロージャ
        });
    }
}
PHP5.3の新機能
namespace


• 名前空間

• クラス名や関数名をパッケージ化

• 名前の衝突を防ぐ
PHP5.3未満
namespace

• グローバル空間のみ



     Log              Log



            グローバル空間
PHP5.3未満
namespace

• グローバル空間のみ

            名前が競合

     Log              Log



            グローバル空間
5.3以降
namespace

• グローバル空間+namespace



      Log
      Log              Log

    名前空間A             名前空間B
            グローバル空間
5.3以降
namespace

• グローバル空間+namespace
            同じ名前を共存

      Log
      Log              Log

    名前空間A             名前空間B
            グローバル空間
namespaceの定義
namespace



• namespace文で定義

• バックスラッシュで階層化

• namespaceは定義したファイル(だけ)に影響

• クラス、インターフェイス、関数、定数(const)
namespaceの定義
 namespace

• lib.php
<?php
namespace OneByOnelib;

interface IBar {
}

class Foo {
}

function func() {
}

const VALUE = 1;
namespaceの定義
 namespace

• lib.php
<?php
namespace OneByOnelib;   namespace宣言
interface IBar {
}

class Foo {
}

function func() {
}

const VALUE = 1;
namespaceの定義
 namespace

• lib.php
<?php
namespace OneByOnelib;   namespace宣言
interface IBar {
}
                          OneByOnelibIBar
class Foo {
}

function func() {
}

const VALUE = 1;
namespaceの定義
 namespace

• lib.php
<?php
namespace OneByOnelib;   namespace宣言
interface IBar {
}
                          OneByOnelibIBar
class Foo {               OneByOnelibFoo
}

function func() {
}

const VALUE = 1;
namespaceの定義
 namespace

• lib.php
<?php
namespace OneByOnelib;    namespace宣言
interface IBar {
}
                          OneByOnelibIBar
class Foo {                OneByOnelibFoo
}

function func() {         OneByOnelibfunc()
}

const VALUE = 1;
namespaceの定義
 namespace

• lib.php
<?php
namespace OneByOnelib;    namespace宣言
interface IBar {
}
                           OneByOnelibIBar
class Foo {                OneByOnelibFoo
}

function func() {         OneByOnelibfunc()
}

const VALUE = 1;          OneByOnelibVALUE
namespaceの利用
namespace


• 同じ名前空間ならクラス名のみ
 => Foo

• 別の名前空間なら名前空間を指定
 => OneByOnelibFoo

• use 文で名前空間のインポート、エイリアス
namespaceの利用
 namespace

<?php
namespace OneByOnemain;

require 'lib.php';

use OneByOnelibFoo;              useでインポート、エイリアス
use OneByOnelibFoo as libFoo;

class Bar {
}

$bar = new Bar();
$foo1 = new OneByOnelibFoo();
$foo2 = new Foo();
$foo3 = new libFoo();
namespaceの利用
 namespace

<?php
namespace OneByOnemain;

require 'lib.php';

use OneByOnelibFoo;              useでインポート、エイリアス
use OneByOnelibFoo as libFoo;

class Bar {
}
                                    OneByOnemainBar
$bar = new Bar();
$foo1 = new OneByOnelibFoo();
$foo2 = new Foo();
$foo3 = new libFoo();
namespaceの利用
 namespace

<?php
namespace OneByOnemain;

require 'lib.php';

use OneByOnelibFoo;              useでインポート、エイリアス
use OneByOnelibFoo as libFoo;

class Bar {
}
                                    OneByOnemainBar
$bar = new Bar();
$foo1 = new OneByOnelibFoo();
$foo2 = new Foo();
                                     OneByOnelibFoo
$foo3 = new libFoo();
教えて!namespace1
namespace




            組み込みクラス

       呼び出しでエラー
組み込みクラス
namespace


<?php
namespace OneByOnelib;

$obj = new stdclass();
組み込みクラス
namespace


<?php
namespace OneByOnelib;

$obj = new stdclass();




 Class 'OneByOnelibstdclass' not found
組み込みクラス
namespace


<?php
namespace OneByOnelib;

$obj = new stdclass();
組み込みクラス
namespace


<?php
namespace OneByOnelib;

$obj = new stdclass();




 組み込みクラスは先頭にバックスラッシュを
教えて!namespace1
namespace




    組み込み関数や定数は

            動くよ!
組み込み関数,定数
namespace


<?php
namespace OneByOnelib;

echo strlen("abc");
error_reporting(E_ALL);



 バックスラッシュ無しでエラーにならない!
名前解決 - 先頭にが無い時
namespace



• クラス名、インターフェイス名
 1. 指定された名前空間で探す

• 関数、定数
 1. 指定された名前空間で探す

 2. 無ければグローバル空間で探す
教えて!namespace2
namespace




   名前空間を指定した時、

  先頭にバックスラッシュを

      付ける?付けない?
先頭のバックスラッシュ
 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();
先頭のバックスラッシュ
 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();
教えて!namespace3
namespace




       クラス名と同名の

  コンストラクタが動かない
旧コンストラクタ
namespace

<?php
namespace OneByOnelib;

class Foo {
  public function Foo() {
    var_dump(__METHOD__);
  }
}

$foo = new Foo();           コンストラクタが呼ばれない
コンストラクタ
namespace

<?php
namespace OneByOnelib;

class Foo {
  public function __construct() {
    var_dump(__METHOD__);
  }
}

$foo = new Foo();          コンストラクタが呼ばれる
旧コンストラクタ
namespace




• namespaceを定義するとクラス同名コンストラ
  クタは呼ばれない

• コンストラクタは__construct()にする
教えて!namespace4
namespace




       名前空間の名前を

            どう付ける?
PSR-0
namespace




               PSR-0

https://github.com/php-fig/fig-standards/blob/master/
                 accepted/PSR-0.md
PSR-0
namespace



• 名前空間、PHPファイル名のルール

• 著名なフレームワーク開発者などが制定

• 著名なフレームワークが対応

• これから名前空間を付けるなら PSR-0 で
PSR-0
namespace


• Vendor_NamePathClass.php

• トップレベルはベンダー名

• セカンドレベル以降は、PHPファイルへのディレク
  トリ

• ファイル名は「クラス名.php」
PSR-0
namespace



• DoctrineCommonIsolatedClassLoader
  => /path/to/project/lib/vendor/Doctrine/Common/
  IsolatedClassLoader.php

• SymfonyCoreRequest
  => /path/to/project/lib/vendor/Symfony/Core/
  Request.php
namespaceの特徴
namespace




• 名前の衝突を防ぐ

• 5.3フレームワークでは必須なので、
   最低限使い方は押さえておく

• autoload
クロージャ


• 無名関数、ラムダ関数

• オンザフライで関数定義

• create_functionを書きやすく
create_functionとの比較
 クロージャ

• create_function
<?php
$func = create_function('$a, $b', 'return $a + $b;');
var_dump($func(1, 2));




• Closure
<?php
$func = function($a, $b) {
   return $a + $b;
};                                             付ける
var_dump($func(1, 2));
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));
__invoke()
 クロージャ



<?php
class Foo {
  public function __invoke() {
    echo 'Hello, Foo'.PHP_EOL;
  }
}

$foo = new Foo();
$foo();
__invoke()
 クロージャ



<?php
class Foo {
  public function __invoke() {
    echo 'Hello, Foo'.PHP_EOL;
  }
}

$foo = new Foo();
$foo();              Foo#__invoke()が実行される
メソッド内でコード共有
    クロージャ


<?php
class Foo {
  public function something() {
    /*
      似たような処理
        */

        /*
         似たような処理                  似たような処理をまとめる
        */
    }
}
メソッド内でコード共有
    クロージャ


<?php
class Foo {
  public function something() {
    $this->共通処理();

        $this->共通処理();
    }

    protected function 共通処理() {
                                  別メソッドに切り出す
        /*
         似たような処理
        */
    }
}
メソッド内でコード共有
    クロージャ


<?php
class Foo {
  public function something() {
    $func = function() {
      /*
       似たような処理
             */
        };
                                  クロージャにまとめる
        $func();

        $func();
    }
}
クロージャの特徴
クロージャ




• array_filter()等のコールバック関数を
  簡潔に書ける

• useでクロージャ内に値をカプセル化

• 手軽にメソッド内でコード共有
LSB


• Late Static Bindings

• 遅延静的束縛

• 参照するクラス定数、クラスメソッドを
  実行時に決定
継承クラスのクラス定数
    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());
継承クラスのクラス定数
    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());
継承クラスのクラス定数
    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());
継承クラスのクラス定数
    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"
継承クラスのクラスメソッド
    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();
継承クラスのクラスメソッド
    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();
継承クラスのクラスメソッド
    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();
継承クラスのクラスメソッド
    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();
LSBの特徴
LSB




• static:: で、対象クラスのクラス定数、
      クラス変数、クラスメソッドを参照

• インスタンス化せずにクラスを利用する
      用途が広がる
その他
•   __DIR__ / __NAMESPACE__


•   ?:


•   Nowdoc


•   goto


•   Phar


•   Reflection(Method¦Property)::setAccessible()



    and more...
その他




 PHPマニュアル見なさい
まとめ
まとめ


• PHP5.3がいよいよ本番

• 新機能を活用しよう

• 5.3フレームワークを触って学ぶ
 => Silex
参照

• 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/
@shin1x1

Weitere ähnliche Inhalte

Was ist angesagt?

Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門keroyonn
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼうDaiki Ichinose
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.specKent Ohashi
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTMasahiro Nagano
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構katanyan
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会Yuji Otani
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能hitode909
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 

Was ist angesagt? (19)

Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼう
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.spec
 
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
Using Dancer
Using DancerUsing Dancer
Using Dancer
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 

Ähnlich wie あらためてPHP5.3

5分で分かる名前空間とオートロード
5分で分かる名前空間とオートロード5分で分かる名前空間とオートロード
5分で分かる名前空間とオートロードK Holy
 
Best practice laravel
Best practice laravelBest practice laravel
Best practice laravelRisa Ohnishi
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019Rui Hirokawa
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014Rui Hirokawa
 
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3xibbar
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017Rui Hirokawa
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013Rui Hirokawa
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理するKenjiro Kubota
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023Rui Hirokawa
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するkwatch
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文Appresso Engineering Team
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法regret raym
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 

Ähnlich wie あらためてPHP5.3 (20)

5分で分かる名前空間とオートロード
5分で分かる名前空間とオートロード5分で分かる名前空間とオートロード
5分で分かる名前空間とオートロード
 
Best practice laravel
Best practice laravelBest practice laravel
Best practice laravel
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017
 
Project lambda
Project lambdaProject lambda
Project lambda
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理する
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
Task
TaskTask
Task
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 
Functional Way
Functional WayFunctional Way
Functional Way
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 

Mehr von Masashi Shinbara

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライドMasashi Shinbara
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Masashi Shinbara
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-Masashi Shinbara
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2Masashi Shinbara
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPressMasashi Shinbara
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Masashi Shinbara
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築Masashi Shinbara
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationMasashi Shinbara
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーションMasashi Shinbara
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションMasashi Shinbara
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク LaravelMasashi Shinbara
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDockerMasashi Shinbara
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Masashi Shinbara
 
開発現場で活用するVagrant
開発現場で活用するVagrant開発現場で活用するVagrant
開発現場で活用するVagrantMasashi Shinbara
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るMasashi Shinbara
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションMasashi Shinbara
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門Masashi Shinbara
 
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインLaravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインMasashi Shinbara
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!Masashi Shinbara
 

Mehr von Masashi Shinbara (20)

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライド
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
開発現場で活用するVagrant
開発現場で活用するVagrant開発現場で活用するVagrant
開発現場で活用するVagrant
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
 
Vagrant体験入門
Vagrant体験入門Vagrant体験入門
Vagrant体験入門
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
 
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインLaravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
 

Kürzlich hochgeladen

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Kürzlich hochgeladen (8)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

あらためてPHP5.3

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n