• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
20110910 闇鍋的php魔改造
 

20110910 闇鍋的php魔改造

on

  • 5,711 views

PHPカンファレンス2011 LTで話してきたスライドです

PHPカンファレンス2011 LTで話してきたスライドです

Statistics

Views

Total Views
5,711
Views on SlideShare
4,451
Embed Views
1,260

Actions

Likes
3
Downloads
7
Comments
0

6 Embeds 1,260

http://d.hatena.ne.jp 1159
http://paper.li 56
http://infra.rrdtool.net 39
http://webcache.googleusercontent.com 3
https://twitter.com 2
http://127.0.0.1 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20110910 闇鍋的php魔改造 20110910 闇鍋的php魔改造 Presentation Transcript

    • 闇鍋的P H P魔改造
      2011/09/10 PHPカンファレンス2011
      Presented By do_aki
    • こんにちは!
    • do_aki(どぅーあき)
      インフラとか Webアプリケーション とかやってる系エンジニア in(株)もしも
      http://do-aki.net/
    • 闇鍋的PHP魔改造って?
    • $脳内 = [Pure PHP =>  弄るところ少ない,Pecl=>  内部実装分からない,];
    • 内部実装は分からないコンパイラの知識はある(かじった程度)
      処理系に手を入れてみよう
    • 闇鍋的にオレオレPHPを作ってみた
    • 用意するもの
      PHP の ソースコード (php-5.4 alpha3)
      PHPコンパイル環境
      re2c (字句解析器)
      Bison (構文解析器)
      失敗してもめげない気持ち
      一番大事!
    • 闇鍋オレオレPHPのレシピ
      ソースコードを展開
      ./configure
      Zend/zend_language_scanner.lZend/zend_language_parser.yを書換
      不要なファイルの削除
      rmZend/zend_language_{scanner,parser}.c
      make
    • zend_language_scanner.l
      字句解析器に喰わせる
      この文字の羅列(トークン)にはこういう意味があるというのを定義(例:「function」-> T_FUNCTION )
      このトークンがあったらこの処理をする
      (例:<?php -> ここからPHPスクリプトだよ       という状態遷移を発生)
    • zend_language_parser.y
      構文解析器に喰わせる
      このトークンがこういう順序できたらこの処理をする
      ここに記述されないパタンは SyntaxError
       例: ○foreach ($array as $var) {}
          × while ($array as $var) {}
    • 苦節 10日make回数 100回以上なんとか作り上げたものがこちら
    • 日本語プログラミング言語ぺちぺち
    • <?php
      functionHelloPHP() {
      echo"Hello PHP World";
      }
      HelloPHP();
      PHP
      ぺちぺち
      関数はろーぺちぺち() ここから
      「"はろー ぺちぺち わーるど"」と表示
      ここまで
      はろーぺちぺち();
      ぺちぺち
    • ぺちぺち
      初心者に、余計にやさしい PHP
    • 条件分岐
      もし [条件] ならば

       そうでないならば

      条件おわり
    • 繰り返し
      繰り返し [条件]の間
      ここから

      ここまで
    • 変数/条件/演算子
      変数:ほげ は0 です
      1が 2より小さい(1<2)
      1が 2より大きい (1>2)
      1足す 2 (1+2)
      10 を3 で割った余り (10%3)
    • <?php
      $counter = 1;
      while($counter <= 10) {
      if($counter % 2 === 0) {
      echo $counter, " is evenn";
      } else {
      echo $counter, " is oddn";
      }
      $counter = $counter + 1;
      }
      PHP
    • ぺちぺち
      変数:カウンタ は 1 です;
      繰り返し 変数:カウンタ が 10 以下の間
      ここから
       もし変数:カウンタを 2 で割った余り が
        0に等しい ならば
        「変数:カウンタ," は偶数ですn"」と表示;
       そうでないならば
        「変数:カウンタ," は奇数ですn"」と表示;
       条件終わり
       変数:カウンタ に 変数:カウンタ 足す 1 を代入;
      ここまで
      ぺちぺち
    • ぺちぺちはPHP
    • Webアプリケーションとしても実行可能
    • DEMO
    • 内部構造知らなくてもここまでできる!
      レッツPHP魔改造♪
      詳しく聞きたい方は懇親会で!
    • ありがとうございました!