SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
40分間濃縮
PHP classの教室

 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
PHPカンファレンス北海道2012 / Yusuke Ando (@yando)
本日の対象者

  PHPを使っている
 関数はなんとなくわかる
  classを理解したい
   完全版はWebで


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
本日のメニュー


  関数を使ったPHP
 オブジェクト指向の基礎
 コードの拡張性を上げる



40分濃縮PHP classのクラス / Yusuke Ando (@yando)
by jepoirrier




 関数を使ったPHP
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
関数とは

  処理に名前を付ける
引数(ひきすう)を受け取る
  好きな処理をする
 返り値(かえりち)を返す


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
function
<?php
function hoge() {
  return date( Y-m-d );
}
function fuga($w = null) {
  if (is_null($w)) {
    $w = date( w );
  }
  $list = array( 日 , 月 , 火 , 水 , 木 , 金 , 土 );
  return $list[$w];
}
echo hoge(); // 2012-03-21 などと表示
echo fuga(3); // 水 と表示

  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
functionの細かいとこ

    名前の大文字小文字
       スコープ
      引数の順番
       2重定義


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
名前の大文字小文字
<?php
function hoge() {
  return date('Y-m-d');
}
echo hoge(); // 2012-03-21 などと表示
echo Hoge();
echo HOGE();
echo hogE();
$a = 'hoge';
echo $a();                   全部同じ結果


 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
スコープ
<?php
$out = '1000';
function hoge() {
  $in = 'ABCD';
  echo $out;
                      hoge()内で有効なのは
  echo $etc;
}                           $inのみ
function fuga() {
  $etc = 'XYZ';
}
hoge();
hoge();                  $inが有効なのは
echo $in;                 hoge()内のみ

  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
引数の順番
<?php
function hoge($a) {
}
function fuga($a, $b =0){
}
function moge($a=null,$b=null,$c) {
}
hoge(1); //OK
fuga(1); //OK
moge(1,2,3); //OK
hoge();
fuga();                   必須の引数が指定されて
moge(1,2);                     いないとエラー

 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
二重定義

<?php
function hoge() {
}
function hoge() {
}
                          FATALエラー
                         真っ白になります




   40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習1
   関数を作ってください
    引数: 名前、性別
       結果:
     男なら○○くん
    女なら○○ちゃん

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
作例1
<?php
function getLabel($name, $sex) {
   if ($sex == '1') {
       $suffix = 'くん';
   } else {
       $suffix = 'ちゃん';
   }
   return $name . $suffix;
}


echo getLabel('つとむ', 1); //つとむくん
echo getLabel('やよい', 2); //やよいちゃん


  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習2

 練習1の機能は維持して
 年齢も引数で受け取り
   12歳以上なら
  ○○君/○○さん


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
作例2
<?php
function getLabel($name, $sex, $age=0) {
    if ($sex == '1') {
         $suffix = 'くん';
         if ( $age >= 12) {
              $suffix = '君';
         }
    } else {
         $suffix = 'ちゃん';
         if ( $age >= 12) {
              $suffix = 'さん';
         }
    }
    return $name . $suffix . "n";
}
echo getLabel('つとむ', 1,10); //つとむくん
echo getLabel('やよい', 2,20); //やよいさん

    40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習3
練習1,2の機能は維持して
   男の子なら青
  女の子ならピンク
になるようにタグで囲む。
(タグなしの機能も残す)

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
<?php
                                             作例3
function getLabel($name, $sex, $age=0, $coloring=false) {    echo getLabel('つとむ', 1); //つとむくん
     if ($sex == '1') {                                      echo getLabel('やよい', 2); //やよいちゃん
            $suffix = 'くん';                                    echo getLabel('つとむ', 1,10); //つとむくん
            $color = 'blue';                                 echo getLabel('やよい', 2,8); //やよいちゃん
            if ( $age >= 12) {                               echo getLabel('つとむ', 1,12); //つとむ君
                  $suffix = '君';                               echo getLabel('やよい', 2,20); //やよいさん
            }                                                echo getLabel('つとむ', 1,0,true);
     } else {                                                //<span style='color:blue'>つとむくん</span>
            $suffix = 'ちゃん';                                   echo getLabel('やよい', 2,0,true);
            $color = 'pink';                                 //<span style='color:pink'>やよいちゃん</span>
            if ( $age >= 12) {
                  $suffix = 'さん';
            }
     }
     $str = "<span style='color:$color'>". $name . $suffix .
"</span>n";
     if (!$coloring) {
            $str = $name . $suffix . "n";
     }
     return $str;
}



             40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習4

練習1,2,3の機能は維持して
学校種別を名前の後に表示
 することもできるように
  例: つとむくん(小)


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
<?php
                                           作例4                } else if ( $age >= 18 && $age <= 21 ) {
function getLabel($name, $sex, $age=0, $coloring=false,              $suffix .= "(大)";
$school=false ) {                                             }
     if ($sex == '1') {                                       $str = "<span style='color:$color'>".
           $suffix = 'くん';                                   $name . $suffix . "</span>n";
           $color = 'blue';                                   if (!$coloring) {
           if ( $age >= 12) {                                        $str = $name . $suffix . "n";
                  $suffix = '君';                                }
           }                                                  return $str;
     } else {                                             }
           $suffix = 'ちゃん';
           $color = 'pink';                               echo   getLabel('つとむ',   1); //つとむくん
           if ( $age >= 12) {                             echo   getLabel('やよい',   2); //やよいちゃん
                  $suffix = 'さん';                           echo   getLabel('つとむ',   1,10); //つとむくん
           }                                              echo   getLabel('やよい',   2,8); //やよいちゃん
     }                                                    echo   getLabel('つとむ',   1,12); //つとむ君
     if ( $age >= 6 && $age <= 11 ) {                     echo   getLabel('やよい',   2,20); //やよいさん
           $suffix .= "(小)";                                echo   getLabel('つとむ',   1,10,false,true); //つとむくん
     } else if ( $age >= 12 && $age <= 14 ) {             echo   getLabel('やよい',   2,8,false,true); //やよいちゃん
           $suffix .= "(中)";                                echo   getLabel('つとむ',   1,12,false,true); //つとむ君
     } else if ( $age >= 15 && $age <= 17 ) {             echo   getLabel('やよい',   2,20,false,true); //やよいさん
           $suffix .= "(高)";



             40分濃縮PHP classのクラス / Yusuke Ando (@yando)
なんか


ヤバイ
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
長さがヤバイ




                      エディタに収まらなく
                        なりつつある

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
マジックナンバー

                     この数字や文字を後で変
                     更する時にミスりそう




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
多すぎる引数




                        呪文と化した引数

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
複数の関数に分割?

    共通部分が多く
     引数も多い
  簡単には分割できない



40分濃縮PHP classのクラス / Yusuke Ando (@yando)
分割するにも


                       扱っている変数が多い




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
関数の弱点

   引数と返り値は
複雑なデータを扱うには貧弱
 (データが単純ならOK)



40分濃縮PHP classのクラス / Yusuke Ando (@yando)
ダークサイドの誘惑




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
一見綺麗だが…
                      このあたりの変数名が
                      衝突した瞬間にアウト




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
再利用性に乏しい
                    データをセットしなおさ
                      す必要がある




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
つまり
あのプラグインを入れた
  ら真っ白に…
                       ここでは動いているけ
                        ど、あっちではダメ

似たような関数がたくさ
 んコピペされている
                      手出しできない密林が
                        コードにある


 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
by wocrig




オブジェクト指向の基礎
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
最初に覚える事

•クラス
 •プロパティ
 •定数
 •メソッド
•インスタンス
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
クラス
<?php
class MyClass {
   const HOGE =100;
   public $some_string = こんにちは ;
   public $num;
   public function sayHello() {
      echo Hello ;
   }
}
       classでクラスを宣言
     プロパティ、定数、メソッド
      をクラス内に宣言できる
 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
インスタンス化
<?php
$obj = new MyClass();
$obj->sayHello();
$obj->some_string = AAAA ;




  クラスとして宣言した処理を
 利用する為のオブジェクトを作成
アロー演算子(->)でメソッド等を指定

  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
$this
<?php
class MyClass {
   const HOGE =100;
   public $some_string = こんにちは ;
   public function sayHello() {
      echo $this->some_string;
   }
}



    自分自身を指すオブジェクト
      メソッド内で使える
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
const
<?php
class MyClass {
   const HOGE =100;
   public function sayHello() {
      echo self::HOGE; // MyClass::HOGE でもOK
   }
}



  オブジェクトに属する定数を設定
  self:: か クラス名:: で参照できる

  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
$this
<?php
class MyClass {
   public $some_string = こんにちは ;
   public function sayHello() {
      echo $this->some_string;
   }
   public function change() {
      $this->some_string = こんばんわ ;
   }
}

   プロパティはメソッドを跨って
     参照や更新ができる
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
オブジェクトには

 関数には出来なかった
  引数・返り値以外の
データを扱う方法がある!



40分濃縮PHP classのクラス / Yusuke Ando (@yando)
これを整理してみる




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習5
クラスを作ってください
プロパティ: 名前、性別
 メソッド:下記を返す
   男なら○○くん
  女なら○○ちゃん

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
作例5.1




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
初期化をどうするか

名前と性別の初期化が必要
      引数
    直接セット
  初期化用メソッド

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
引数




                            破滅の予感

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
直接セット




                      面倒くさい


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
初期化用メソッド



                             忘れそう




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
コンストラクタ
<?php
class MyClass {
      public $name;
   public __construct($name) {
      $this->name = $name;
   }
}


__construct というメソッドを作成
クラスをnewしてインスタンス化時に
        必ず実行される!

 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
作例5.2




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習6

  コンストラクタで
年齢も受け取りプロパティへ
   12歳以上なら
  ○○君/○○さん


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
作例6




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
その他の機能

•アクセス修飾子
•オートロード
•namespace
•static

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
アクセス修飾子
<?php
class MyClass {
   const HOGE =100;
   private $some_string = こんにちは ;
   public function sayHello() {
      echo Hello ;
   }
}

メソッドやプロパティへのクラス外から
    のアクセスを制限できる
  public / private / protected
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
アクセス修飾子

 外部アクセスが不要な
      プロパティ
       メソッド
をprivateにする事が多い

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
オートロード
<?php
function __autoload($class_name) {
    include $class_name . '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2();

クラス名とファイル名を整理しておくと
   クラスを自動的に読み込める
 (クラス定義のみ別ファイルが理想)
 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
namespace
<?php
namespace myname;
class MyClass {}
function myfunction() {}
const MYCONST = 1;


$c = new mynameMyClass;

さらには namespace という文法を使っ
 てフォルダ階層とクラスを対応させる
  方法がPHP5.3以降で使えるように

 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
static
<?php
class MyClass {
   const HOGE =100;
   private $some_string = こんにちは ;
   public static function sayHello() {
      echo Hello ;
   }
}
echo MyClass::sayHello();


  staticが指定されたメソッドは
 インスタンスを作らずに実行できる
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
staticの落とし穴
<?php
class MyClass {
   const HOGE =100;
   private $some_string = こんにちは ;
   public static function sayHello() {
      echo $this->some_string;
   }
}
echo MyClass::sayHello();


     staticが指定されたメソッドは
           $thisを使えない!
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
staticはステートレス
staticはインスタンス毎のデータが扱え
    ず、実質グローバル関数と同じ


補助的な処理などに利用されるが、多用
    するとグローバル関数と
   同じ問題を引き起こします


 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
by MarkyBon




コードの拡張性を上げる
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
クラスを拡張する機能

•継承
•抽象クラス
•インターフェース
•トレイト
•マジックメソッド
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
継承
<?php
class MyClass {
   public function hoge() {
      echo a ;
   }
}
class MySubClass extends MyClass {}


$obj = new MySubClass();
$obj->hoge();

      既存のクラスを再利用して
         クラスを作る
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
parent::
<?php
class MyClass {
   public function hoge() {
      echo a ;
   }
}
class MySubClass extends MyClass {
   public function Hello() {
      parent::hoge();
   }
}


メソッドを再利用して新しい処理を作成
  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
継承
 元のクラスは親クラス、
  スーパークラスと呼ぶ
 parent:: で参照できる
既存のメソッドを上書きも可
   privateは触れない

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習7

 クラスを作ってください
 Kidを継承したHtmlKid
      出力時に
 男子は青、女子はピンク


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
練習7

Kid.php - 先程のコード
HtmlKid.php - 新規
test.phpから実行



 40分濃縮PHP classのクラス / Yusuke Ando (@yando)
作例7




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
抽象クラス
<?php
abstract class BaseClass {
  abstract protected function fuga();
  public function hoge() {
     echo a ;
  }




   親クラスになる為だけのクラス



  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
インターフェース
<?php
interface iihito {
   public function sayHello();
}


class Person implements iihito {
   public function sayHello(){
   }
}



  特定のメソッドの保持を強制する

  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
トレイト
<?php
trait iihito {
   public function sayHello() {
   }
}


class Person{
   use iihito;
}



特定のメソッドをクラスに注入する

  40分濃縮PHP classのクラス / Yusuke Ando (@yando)
最初に思う疑問
      継承
    抽象クラス
   インターフェース
     トレイト
 なぜ似たような機能が?

40分濃縮PHP classのクラス / Yusuke Ando (@yando)
継承は1つのみ

  インタフェース
  トレイトは柔軟
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
マジックメソッド

クラスに作ると特定のタイ
ミングで自動的に実行され
  るすごいメソッド


40分濃縮PHP classのクラス / Yusuke Ando (@yando)
マジックメソッド




40分濃縮PHP classのクラス / Yusuke Ando (@yando)
まとめ
40分濃縮PHP classのクラス / Yusuke Ando (@yando)
classは

•複雑なコードを整理
•コードの拡張性を確保
•コードをメンテナンスする
クラス=難しい ではなく難しい問題
   を解決する為の機能です

40分濃縮PHP classのクラス / Yusuke Ando (@yando)

Más contenido relacionado

La actualidad más candente

Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)Yoshiro Tokumasu
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?Hiroshi Tokumaru
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPIAkihiro Ikezoe
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装infinite_loop
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装Kenjiro Kubota
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
Laravel echo + vue.js + axiosで簡単チャットアプリ開発
Laravel echo + vue.js + axiosで簡単チャットアプリ開発Laravel echo + vue.js + axiosで簡単チャットアプリ開発
Laravel echo + vue.js + axiosで簡単チャットアプリ開発宜浩 香月
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャーssuser070fa9
 
Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsugSpring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsugToshiaki Maki
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 

La actualidad más candente (20)

Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
Laravel echo + vue.js + axiosで簡単チャットアプリ開発
Laravel echo + vue.js + axiosで簡単チャットアプリ開発Laravel echo + vue.js + axiosで簡単チャットアプリ開発
Laravel echo + vue.js + axiosで簡単チャットアプリ開発
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
 
Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsugSpring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsug
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 

Similar a 40分濃縮 PHP classの教室

PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室Yusuke Ando
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012Yusuke Ando
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトアシアル株式会社
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
WPerのWPerによるWPerのためのPHP入門
WPerのWPerによるWPerのためのPHP入門WPerのWPerによるWPerのためのPHP入門
WPerのWPerによるWPerのためのPHP入門Muyuu Fujita
 
&& || and or まぜるな危険
&& || and or まぜるな危険&& || and or まぜるな危険
&& || and or まぜるな危険Hisateru Tanaka
 
LT at JavaOne2012 JVM language BoF #jt12_b101
LT at JavaOne2012  JVM language BoF #jt12_b101LT at JavaOne2012  JVM language BoF #jt12_b101
LT at JavaOne2012 JVM language BoF #jt12_b101Takeshi AKIMA
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺちdo_aki
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 

Similar a 40分濃縮 PHP classの教室 (11)

PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
WPerのWPerによるWPerのためのPHP入門
WPerのWPerによるWPerのためのPHP入門WPerのWPerによるWPerのためのPHP入門
WPerのWPerによるWPerのためのPHP入門
 
&& || and or まぜるな危険
&& || and or まぜるな危険&& || and or まぜるな危険
&& || and or まぜるな危険
 
LT at JavaOne2012 JVM language BoF #jt12_b101
LT at JavaOne2012  JVM language BoF #jt12_b101LT at JavaOne2012  JVM language BoF #jt12_b101
LT at JavaOne2012 JVM language BoF #jt12_b101
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 

Más de Yusuke Ando

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大Yusuke Ando
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版Yusuke Ando
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CIYusuke Ando
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストYusuke Ando
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Yusuke Ando
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Yusuke Ando
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Yusuke Ando
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツYusuke Ando
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションYusuke Ando
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行Yusuke Ando
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるYusuke Ando
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Yusuke Ando
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard CloudYusuke Ando
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めようYusuke Ando
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」Yusuke Ando
 

Más de Yusuke Ando (20)

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーション
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆ける
 
Dev opschef
Dev opschefDev opschef
Dev opschef
 
Paa s and oss
Paa s and ossPaa s and oss
Paa s and oss
 
New relic
New relicNew relic
New relic
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard Cloud
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
 

Último

2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 

Último (12)

2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 

40分濃縮 PHP classの教室