php.js
うさみけんた@ぞ
2014-06-08 天下一altJS武闘会
お前誰よ
• うさみけんた a.k.a Zonu.EXE(ぞ)
• 2012年秋に自宅警備職を廃業いたしました
• 仕事ではPHPとかPHPとかPHPを書いてます
• 情弱いのでIDEとかよくわからなくて、

EmacsとVimで開発してます
         /              /
       ,イ               /
      //                    |
      /         ,ィ介i      |   う  ぶ  き
  ...
PHPとは何か
<?php $n = 100;	
for ($i = 1; $i <= $n; $i++) {	
if ($i % 3 === 0) { ?>Fizz<?php }	
if ($i % 5 === 0) { ?>Buzz<?php }	
els...
php.js
会場に来るまで
気がつかなかったんだけど
_人人人人人人人_
> 二種類ある <
 ̄Y^Y^Y^Y^Y^Y ̄
php.js implements PHP
functions in JavaScript
(kvz/phpjs, phpjs.org)
kvz/phpjs 2008年3月〜
PHPの函数を
たくさん移植してる
date("Y-m-d H:i:s", strtotime("1 week ago”))	
// => "2014-06-01 15:04:19"
PHPのべんり機能がJSから!
% cat myphp.js	
require('phpjs').registerGlobals();	
console.log(array_merge([1,2,3], [1,2,3]));	
!
% node myphp.js	
[ 1, ...
PHP to JavaScript converter
and VM written in JavaScript
(niklasvh/phpjs,
phpjs.hertzen.com)
niklasvh/phpjs 2012年1月〜
JS上にPHPのVMを構築してる
php.js console
<?php $n = 100;	
for ($i = 1; $i <= $n; $i++) {	
if ($i % 3 === 0) { ?>Fizz<?php }	
if ($i % 5 === 0) { ?>Buzz<?php }	
els...
$("n")._($$(100));	
LABEL0: for( $("i")._($$(1)); ($("i").
$S_Equal($("n"))).$Bool.$; $("i").$PostInc().$
) { ENV.$Timer()...
1 	
2 	
Fizz 	
4 	
Buzz 	
Fizz 	
7 	
8 	
Fizz 	
Buzz 	
11 	
実行出力
Real World php.js<!DOCTYPE html>	
<title>php.js</title>	
<script src="PHP.min.js"></script>	
<script src="adapters/filesys...
php.jsのどこが
最強だったか
TIOBE Index for May 2014
私からは以上です
          トv'Z -‐z__ノ!_
        . ,.'ニ.V _,-─ ,==、、く`
      ,. /ァ'┴' ゞ !,.-`ニヽ、トl、:. ,
    rュ. .:{_ '' ヾ 、_カ-‐'¨ ̄フヽ`'|::: ...
発表後の追記
/(^o^)\
php.js
Upcoming SlideShare
Loading in...5
×

php.js

8,089

Published on

天下一altJS武闘会で発表しました http://connpass.com/event/6402/

Published in: Technology

php.js

  1. 1. php.js うさみけんた@ぞ 2014-06-08 天下一altJS武闘会
  2. 2. お前誰よ • うさみけんた a.k.a Zonu.EXE(ぞ) • 2012年秋に自宅警備職を廃業いたしました • 仕事ではPHPとかPHPとかPHPを書いてます • 情弱いのでIDEとかよくわからなくて、
 EmacsとVimで開発してます
  3. 3.          /              /        ,イ               /       //                    |       /         ,ィ介i      |   う  ぶ  き       {. |l     ,イ  ///||     |   ち   っ え      ,-.、Vl      / | /// | |    」  に  と  ろ       lこ!l ! ト   ト.l | !i  | ヽト、<   な  ば       |  l Vヽ  トjヽ\!l   ,>‐_ニヽ     さ      |  |   \ ! く__・、jiLノ・_´フ .||   れ      | | __   ヽ} -‐   -─‐  レヘ.   ん    _r‐j   >イ fヽ  l   ノ  __    ,イ-ハ   / ′、   i   {ノ-、 ヽ  `t_/  /| /´ヽ  〈 ヽ    l   |  }   \    -' j  |   \   ヽ          /     |  ̄     L   ヽ       / -─ フ′          `ヽ─- 、    ヽ     ヽ  /`ー-、   ,. -─ '/    ー- 、     f‐--── 'ヽ {     ~    /  /, -──‐-\   /|         | ヽ         / ///        ヽ 最強言語の話をします
  4. 4. PHPとは何か
  5. 5. <?php $n = 100; for ($i = 1; $i <= $n; $i++) { if ($i % 3 === 0) { ?>Fizz<?php } if ($i % 5 === 0) { ?>Buzz<?php } elseif ($i % 3 !== 0) echo $i; ?> <?php } 人気のテンプレートエンジン
  6. 6. php.js
  7. 7. 会場に来るまで 気がつかなかったんだけど
  8. 8. _人人人人人人人_ > 二種類ある <  ̄Y^Y^Y^Y^Y^Y ̄
  9. 9. php.js implements PHP functions in JavaScript (kvz/phpjs, phpjs.org)
  10. 10. kvz/phpjs 2008年3月〜 PHPの函数を たくさん移植してる
  11. 11. date("Y-m-d H:i:s", strtotime("1 week ago”)) // => "2014-06-01 15:04:19" PHPのべんり機能がJSから!
  12. 12. % cat myphp.js require('phpjs').registerGlobals(); console.log(array_merge([1,2,3], [1,2,3])); ! % node myphp.js [ 1, 2, 3, 1, 2, 3 ] ! % php -r 'var_dump(array_merge([1,2,3], [1,2,3]));' Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 1 [4] => 2 [5] => 3) array_mergeもあるよ
  13. 13. PHP to JavaScript converter and VM written in JavaScript (niklasvh/phpjs, phpjs.hertzen.com)
  14. 14. niklasvh/phpjs 2012年1月〜 JS上にPHPのVMを構築してる
  15. 15. php.js console
  16. 16. <?php $n = 100; for ($i = 1; $i <= $n; $i++) { if ($i % 3 === 0) { ?>Fizz<?php } if ($i % 5 === 0) { ?>Buzz<?php } elseif ($i % 3 !== 0) echo $i; ?> <?php } PHPのテンプレート
  17. 17. $("n")._($$(100)); LABEL0: for( $("i")._($$(1)); ($("i"). $S_Equal($("n"))).$Bool.$; $("i").$PostInc().$ ) { ENV.$Timer(); if ( ($("i").$Mod($$(3)).$Identical($$(0))). $Bool.$) { ENV.$ob(“Fizz"); }; if ( ($("i").$Mod($$(5)).$Identical($$(0))). $Bool.$) { ENV.$ob(“Buzz"); } else if ( ($ ("i").$Mod($$(3)).$NIdentical($$(0))).$Bool.$) { ENV.echo( $("i") ); }; ENV.$ob(" n”); }; JavaScriptの式に変換
  18. 18. 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 実行出力
  19. 19. Real World php.js<!DOCTYPE html> <title>php.js</title> <script src="PHP.min.js"></script> <script src="adapters/filesystem/xhr.js"></script> <script type="application/x-httpd-php" id="init"> <?php $n = 100; for ($i = 1; $i <= $n; $i++) { if ($i % 3 === 0) { ?>Fizz<?php } if ($i % 5 === 0) { ?>Buzz<?php } elseif ($i % 3 !== 0) echo $i; ?> ! <?php } </script> <script> var init_code = document.getElementById(“init").innerHTML, path = window.location.pathname, opts = {SERVER:{SCRIPT_FILENAME: path.substring(0, path.length - 1)}};opts.filesystem = new PHP.Adapters.XHRFileSystem(); engine = new PHP( init_code.replace(/n/g,"rn"), opts), result = engine.vm.OUTPUT_BUFFER.replace(/</g,”&lt;").replace(/>/g,"&gt;").replace(/n/g,"<br />”); document.write(result); </script>
  20. 20. php.jsのどこが 最強だったか
  21. 21. TIOBE Index for May 2014
  22. 22. 私からは以上です
  23. 23.           トv'Z -‐z__ノ!_         . ,.'ニ.V _,-─ ,==、、く`       ,. /ァ'┴' ゞ !,.-`ニヽ、トl、:. ,     rュ. .:{_ '' ヾ 、_カ-‐'¨ ̄フヽ`'|:::  ,.、     、  ,ェr<`iァ'^´ 〃 lヽ   ミ ∧!::: .´       ゞ'-''ス. ゛=、、、、 " _/ノf::::  ~     r_;.   ::Y ''/_, ゝァナ=ニ、 メノ::: ` ;.        _  ::\,!ィ'TV =ー-、_メ::::  r、        ゙ ::,ィl l. レト,ミ _/L `ヽ:::  ._´        ;.   :ゞLレ':: \ `ー’,ィァト.::  ,.        ~ ,.  ,:ュ. `ヽニj/l |/::           _  .. ,、 :l !レ'::: ,. "               `’ `´   ~ ご静聴ありがたうございました
  24. 24. 発表後の追記
  25. 25. /(^o^)\
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×