SlideShare a Scribd company logo
1 of 45
Download to read offline
90分間濃縮
PHPエラーの教室

  Shimokita.php / Yusuke Ando (@yando)
Shimokita.php / Yusuke Ando (@yando)
福岡でのボランティア急募!
  Shimokita.php / Yusuke Ando (@yando)
こんな経験はありませんか?




  Shimokita.php / Yusuke Ando (@yando)
画面が真っ白に

Shimokita.php / Yusuke Ando (@yando)
画面にお経みたいなものがでる

   Shimokita.php / Yusuke Ando (@yando)
サーバのログがゴミ溜めになっている

    Shimokita.php / Yusuke Ando (@yando)
エラー正しく扱えていますか?




  Shimokita.php / Yusuke Ando (@yando)
Shimokita.php / Yusuke Ando (@yando)
Shimokita.php / Yusuke Ando (@yando)
PHPのエラーと例外に関する
取り扱い方法を見ていきます



  Shimokita.php / Yusuke Ando (@yando)
エラーのイロハ

•何故エラーが起きるのか
•エラー関連の設定
•エラーハンドリング
•例外処理

     地味だけれど重要な知識


   Shimokita.php / Yusuke Ando (@yando)
何故エラーが起きるのか



 Shimokita.php / Yusuke Ando (@yando)
エラーとは

•PHPのスクリプトを実行する際の各段階で発生
•構文解析時の問題
•処理の実行中に発生する問題
•拡張モジュールなどの外部プログラム内
•ネットワーク処理など通信が発生した場合


   状況に応じて正しい対処が異なる


     Shimokita.php / Yusuke Ando (@yando)
エラーの種類
       種類                           内容

  E_ERROR / Fatal        実行不可能:処理は停止、白画面

E_WARNING / Warning    警告:実行時に問題発生、処理は継続

  E_PARSE / Parse      解析不能:処理は始まらない、白画面

 E_NOTICE / Notice    通知:問題になりうる状況、処理は継続

    E_STRICT /
                       バージョン間の互換性に関するエラー
  E_DEPRECATED


        重大度に応じてレベルが存在
          Shimokita.php / Yusuke Ando (@yando)
FATAL /                        NOTICE /
  PARSE                        WARNING etc

何も出ないか、壊れた画面かの分かれ目
    Shimokita.php / Yusuke Ando (@yando)
E_PARSE / Parse
        echo echo;


        echo date()
        echo time()




•トークンの出現位置が不正
•セミコロン忘れ、ブレースの対応関係
•全角スペース混入

      シンプルな構文エラー
    Shimokita.php / Yusuke Ando (@yando)
E_ERROR / FATAL
        $obj = 1;
        if ($obj === null) {
          $obj = getObject();
        }
        $obj->myFunc();



•構文は合っていたが、実行しようとした処理が失敗
•関数名間違い、オブジェクトの取り違い
•外部モジュールのエラー

 コードが実行された時の状態が問題
    Shimokita.php / Yusuke Ando (@yando)
E_WARNING

     $body = file_get_contents( hoge.txt );
     echo Hello ;




•処理は実行できたが、失敗してしまった場合
•ファイルやネットワークの処理など
•正常に処理を継続する事はおそらく難しい

エラーを検知してふさわしい処理が必要
    Shimokita.php / Yusuke Ando (@yando)
E_NOTICE
     if ($data == null) {
       echo Hello ;
       echo HOGE;
     }




•未定義の変数、定数を使った場合
•関数への引数が正しくない
•考慮の足りないコードで発生しやすい

   動いていたとしても危険性あり
    Shimokita.php / Yusuke Ando (@yando)
E_STRICT / E_DEPRECATED
      class Sample
      {
         function foo()
         {
            echo "Hi";
         }
      }
      Sample::foo();



•PHP4の文法をPHP5で利用した場合
•将来廃止される予定の機能を使った場合

古い遺産で発生しやすく、不可避な場合も
     Shimokita.php / Yusuke Ando (@yando)
Segmentation Fault




•ログには Segmentation Fault とだけ記録される
 サーバのアップデートなどが必要になる
       Shimokita.php / Yusuke Ando (@yando)
エラー関連の設定



Shimokita.php / Yusuke Ando (@yando)
エラーが画面に出ない?

•発生したエラーを表示するかは設定次第
•php.ini または htaccessなどの設定
•実行時に設定を強制的に変更する事も可能
•ini_set() error_reporting() display_errors()
•エラーをログに記録するかどうかは別の設定


   開発時は表示、運用時は記録が正しい


           Shimokita.php / Yusuke Ando (@yando)
正しい設定
error_reporting = E_ALL
display_errors = On
display_startup_errors = On        全てを検知、表示
log_errors = On
error_log = /path/to/error.log



error_reporting = E_ALL & E_DEPRECATED & E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
                                   互換性エラーは無視
error_log = /path/to/error.log


                                       表示はしない

            Shimokita.php / Yusuke Ando (@yando)
運用中のエラーを隠す理由

DB情報などが入る場合も

                    不具合の発生時に警
                      告が出る場合


 表示が崩れるかも




 Shimokita.php / Yusuke Ando (@yando)
こういうのは...




Shimokita.php / Yusuke Ando (@yando)
これもダメ

   <?php
   @trigger_error("Hi");
   echo "World";

                              強制的に無視




これを多用すると障害発生時に手がかり0


     Shimokita.php / Yusuke Ando (@yando)
エラーハンドリング



Shimokita.php / Yusuke Ando (@yando)
エラーハンドリング

•エラーが発生した後に行う処理
•発生したエラーのレベルに応じて処理が可能
•標準のエラーハンドラはphp.iniの設定に応じた処理
•任意の処理を登録する事も可能
•エラーハンドラから元の処理にも戻れる
•任意のエラーを起こす事も可能

 フレームワークなどでも利用されている


      Shimokita.php / Yusuke Ando (@yando)
エラーハンドリングの例
      function handler($no, $str){
        echo "Error $strn";
        return true;
      }


      set_error_handler('handler');
      echo $a;
      trigger_error('My Error');



•エラーの情報を引数で受け取る
•returnで元の場所へ復帰する

    標準の処理以外の対応が可能
     Shimokita.php / Yusuke Ando (@yando)
エラーハンドリングの例2




 Shimokita.php / Yusuke Ando (@yando)
エラーハンドリングの後
        $body = file_get_contents( hoge.txt );
        if ($body === false) {
            my_error();
            exit;
        }
        echo Hello ;



•処理が継続するWarningやNoticeの後には適切な処理
•不足すると空っぽのリスト、崩れた画面などに繋がる

  ハードな運用を耐えているかの試金石
       Shimokita.php / Yusuke Ando (@yando)
重要なんです!




さすがPHP、エラー時の返り値がバラバ(ry

    Shimokita.php / Yusuke Ando (@yando)
例外処理



Shimokita.php / Yusuke Ando (@yando)
例外処理

•PHP5から利用できるエラー処理
•Javaなどの言語でも実績がある機構
•誤った利用方法により有害無益になっている例多数
•正しく使えばエラー処理がすごく楽になる
•間違って使うと無駄にコードが多くなって、挙動も崩壊


   これからは例外を使って行きたい


     Shimokita.php / Yusuke Ando (@yando)
例外処理の例
      function hoge()
      {
         if (true) {
             throw new Exception('Error!');
         }
      }
      try {
         hoge();
      } catch (Exception $e) {
         echo $e->getMessage();
         exit;
      }



例外オブジェクトをthrowするとcatchに入る
     Shimokita.php / Yusuke Ando (@yando)
例外オブジェクト
•オブジェクトからエラー情報が取得可能
•Exceptionをnewする時にセットされた情報を取得
•getMessage getCode getFile getLine getTrace




          Shimokita.php / Yusuke Ando (@yando)
例外処理の失敗例
 function hoge()
 {
    if (true) {
        return new Exception('Error!');
    }
 }
 try {
    hoge();
 } catch (Exception $e) {
    echo $e->getMessage();
    exit;
 }



例外オブジェクトをreturn...
Shimokita.php / Yusuke Ando (@yando)
例外処理の失敗例2
   function hoge()
   {
      if (true) {
          throw new Exception('Error!');
      }
   }
   try {
      hoge();
   } catch (Excepton $e) {
      echo $e->getMessage();
      exit;
   }



catchする例外の型が合っていない
  Shimokita.php / Yusuke Ando (@yando)
例外処理の失敗例3
  function hoge()
  {
     if (true) {
         throw new Exception('Error!');
     }
  }
  try {
     hoge();
  } catch (Exception $e) {


  }




catchしてもなにもしていない...
 Shimokita.php / Yusuke Ando (@yando)
例外処理に関する誤解

•try catchをたくさん書くのが正しいコード
→きちんと書けば巨大なコードでもcatchは一箇所でよい
•入力エラーなどでも例外処理を使うべき
→通常発生しうるものは例外ではない
•catchすればとりあえずはOK
→catchするのはどうしても必要な場合のみ


 正しく例外を扱うプロジェクトの稀な事

       Shimokita.php / Yusuke Ando (@yando)
例外処理の自動化


       function handler($exception) {
          echo $exception->getMessage();
       }
       set_exception_handler( handler );




•catchされなかった例外が最終的に指定した関数へ到達




      Shimokita.php / Yusuke Ando (@yando)
まとめ

•「画面が白くなりました」は無意味
•エラーの内容を確認しなければ対応は不可能
•Noticeが多いからエラーを消すは本末転倒
•通常稼働中はエラーが発生しないのが理想
•ライブラリやプラグインがNoticeやWarningを垂れ流すの
は非常に害が大きく、廃れる原因

     no more error_reporting(0);
         no more @hoge();
      Shimokita.php / Yusuke Ando (@yando)
質問?




Shimokita.php / Yusuke Ando (@yando)

More Related Content

What's hot

知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
Functional Pearl + Brainfuck
Functional Pearl + BrainfuckFunctional Pearl + Brainfuck
Functional Pearl + BrainfuckEita Sugimoto
 
数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門Toshiyuki Fujikura
 
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhiosSwift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhiosTomohiro Kumagai
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
zend_parse_parametersと64bit環境
zend_parse_parametersと64bit環境zend_parse_parametersと64bit環境
zend_parse_parametersと64bit環境Yo Ya
 

What's hot (6)

知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
Functional Pearl + Brainfuck
Functional Pearl + BrainfuckFunctional Pearl + Brainfuck
Functional Pearl + Brainfuck
 
数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門
 
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhiosSwift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
zend_parse_parametersと64bit環境
zend_parse_parametersと64bit環境zend_parse_parametersと64bit環境
zend_parse_parametersと64bit環境
 

Viewers also liked

HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIHTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIYosuke HASEGAWA
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014Hiroshi Tokumaru
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策Hiroshi Tokumaru
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)Hiroshi Tokumaru
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティHiroshi Tokumaru
 
いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方Hiroshi Tokumaru
 
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達zaki4649
 
他人事ではないWebセキュリティ
他人事ではないWebセキュリティ他人事ではないWebセキュリティ
他人事ではないWebセキュリティYosuke HASEGAWA
 
辞書攻撃をする人は何をどう使っているのか
辞書攻撃をする人は何をどう使っているのか辞書攻撃をする人は何をどう使っているのか
辞書攻撃をする人は何をどう使っているのかozuma5119
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクションzaki4649
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015Hikari Fukasawa
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)kyon mm
 
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHPYusuke Ando
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能Yasuo Ohgaki
 
ネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワードネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワード新潟コンサルタント横田秀珠
 
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナーSEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー新潟コンサルタント横田秀珠
 
Facebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しようFacebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しよう新潟コンサルタント横田秀珠
 
山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所新潟コンサルタント横田秀珠
 
130821 owasp zed attack proxyをぶん回せ
130821 owasp zed attack  proxyをぶん回せ 130821 owasp zed attack  proxyをぶん回せ
130821 owasp zed attack proxyをぶん回せ Minoru Sakai
 

Viewers also liked (20)

HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIHTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
 
いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方
 
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
 
他人事ではないWebセキュリティ
他人事ではないWebセキュリティ他人事ではないWebセキュリティ
他人事ではないWebセキュリティ
 
辞書攻撃をする人は何をどう使っているのか
辞書攻撃をする人は何をどう使っているのか辞書攻撃をする人は何をどう使っているのか
辞書攻撃をする人は何をどう使っているのか
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクション
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
 
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能
 
ネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワードネットビジネスで把握すべき予測・訪問・成約の3キーワード
ネットビジネスで把握すべき予測・訪問・成約の3キーワード
 
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナーSEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
SEOとSNS、友達と他人、個人と会社、誰から何を買うのか?セミナー
 
Facebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しようFacebookページでユーザーからの最近の投稿を表示しよう
Facebookページでユーザーからの最近の投稿を表示しよう
 
山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所山口県山陽小野田市Facebookセミナーin小野田商工会議所
山口県山陽小野田市Facebookセミナーin小野田商工会議所
 
130821 owasp zed attack proxyをぶん回せ
130821 owasp zed attack  proxyをぶん回せ 130821 owasp zed attack  proxyをぶん回せ
130821 owasp zed attack proxyをぶん回せ
 

Similar to 90分間濃縮 PHPエラーの教室

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
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
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理アシアル株式会社
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
Swift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswiftSwift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswiftTomohiro Kumagai
 
SPL fukuokaphp_1
SPL fukuokaphp_1SPL fukuokaphp_1
SPL fukuokaphp_1ichikaway
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室Yusuke Ando
 
ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】株式会社ランチェスター
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!Shinobu Okano
 
WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎Yusuke Hayasaki
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp CodereadingHiro Yoshioka
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Nextdynamis
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDAkio Ishida
 
Spring小話
Spring小話Spring小話
Spring小話eiryu
 
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014Hikari Fukasawa
 

Similar to 90分間濃縮 PHPエラーの教室 (20)

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
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
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
Swift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswiftSwift 2.0 で変わったところ「前編」 #cswift
Swift 2.0 で変わったところ「前編」 #cswift
 
SPL fukuokaphp_1
SPL fukuokaphp_1SPL fukuokaphp_1
SPL fukuokaphp_1
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室
 
ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
pecl-AOPの紹介
pecl-AOPの紹介pecl-AOPの紹介
pecl-AOPの紹介
 
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
 
WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎WordPressのためのphp基礎の基礎
WordPressのためのphp基礎の基礎
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
 
Spring小話
Spring小話Spring小話
Spring小話
 
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014
 

More from 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
 

More from 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でタスク管理を始めよう
 
20121225 php
20121225 php20121225 php
20121225 php
 

90分間濃縮 PHPエラーの教室