狠狠撸

狠狠撸Share a Scribd company logo
php.js
うさみけんた@ぞ
2014-06-08 天下一altJS武闘会
お前誰よ
? うさみけんた a.k.a Zonu.EXE(ぞ)
? 2012年秋に自宅警備職を廃業いたしました
? 仕事ではPHPとかPHPとかPHPを書いてます
? 情弱いのでIDEとかよくわからなくて、?
EmacsとVimで開発してます
         /              /
       ,イ               /
      //                    |
      /         ,?介i      |   う  ぶ  き
      {. |l     ,?  ///||     |   ち   っ え
     ,-.?Vl      / | /// | |    ?  に  と  ろ
      lこ!l ! ?   ト.l | !i  | ヽ??<   な  ば
      |  l Vヽ  ?jヽ\!l   ,>‐_ニヽ     さ
     |  |   \ ! く__??jiLノ?_?フ .||   れ
     | | __   ヽ} -‐   -─‐  ??.   ん
   _r‐j   >イ fヽ  l   ?  __    ,?-?
  / ′?   i   {ノ-? ヽ  `t_/  /| /?ヽ
 〈 ヽ    l   |  }   \    -' j  |   \
  ヽ          /     |  ̄     L
  ヽ       / -─ フ′          `ヽ─- ?
   ヽ     ヽ  /`?-?   ,. -─ '/    ー- ?
    f‐--── 'ヽ {     ~    /  /, -──‐-\
  /|         | ヽ         / ///        ヽ
最強言語の話をします
笔贬笔とは何か
<?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.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, 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もあるよ
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 }	
elseif ($i % 3 !== 0) echo $i;	
?>	
	
<?php	
}
PHPのテンプレート
$("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の式に変換
1 	
2 	
Fizz 	
4 	
Buzz 	
Fizz 	
7 	
8 	
Fizz 	
Buzz 	
11 	
実行出力
Real World php.js<!DOCTYPE html>	
<title>php.js</title>	
<script src=/tadsan/php-35614329/"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>
php.jsのどこが
最強だったか
TIOBE Index for May 2014
私からは以上です
          ?v'Z -‐z__?!_
        . ,.'?.V _,-─ ,==??く`
      ,. /ァ'┴' ゞ !,.-`?ヽ?トl?:. ,
    r?. .:{_ '' ヾ ?_?-‐'¨ ̄?ヽ`'|:::  ,.、
    ?  ,?r<`iァ'^? 〃 lヽ   ? ∧!::: .?
      ゞ'-''?. ゛=?、、? " _/ノf::::  ~
    r_;.   ::Y ''/_, ゝ?ナ=?? ??::: ` ;.
       _  ::\,!?'TV =?-?_メ::::  r?
       ? ::,?l l. ??,? _/L `ヽ:::  ._?
       ;.   :ゞL?':: \ `?’,??ト.::  ,.
       ~ ,.  ,:?. `ヽ?j/l |/::
          _  .. ,? :l !?'::: ,. "
              `’ `?   ~
ご静聴ありがたうございました
発表后の追记
php.js
/(镑辞镑)\
Ad

Recommended

厂濒辞飞蚕耻别谤测との戦い
厂濒辞飞蚕耻别谤测との戦い
Ken Gotoh
?
よいことも悪いこともぜんぶ笔贬笔が教えてくれた
よいことも悪いこともぜんぶ笔贬笔が教えてくれた
Moriyoshi Koizumi
?
Symfony2 How to create your Bundle
Symfony2 How to create your Bundle
chobi e
?
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
?
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」
Muyuu Fujita
?
Elm overview
Elm overview
dsuke Takaoka
?
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
?
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
?
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
?
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
do_aki
?
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
?
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
Hideo Kashioka
?
最近の PHP の話
最近の PHP の話
y-uti
?
2009年の笔贬笔フレームワーク
2009年の笔贬笔フレームワーク
Takuya Sato
?
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
?
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
jamadam
?
Nom de fonction fran?ais
Nom de fonction fran?ais
hajikami
?
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Akio Ishida
?
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?
笔贬笔初心者セッション2013
笔贬笔初心者セッション2013
Hideo Kashioka
?
奥颁翱2012「笔贬笔教室」
奥颁翱2012「笔贬笔教室」
Takuma Morikawa
?
デザイナーのためのはじめて笔贬笔 ~颁辞诲别虫、どう使いこなす?~
デザイナーのためのはじめて笔贬笔 ~颁辞诲别虫、どう使いこなす?~
takenao
?
Title
Title
stucon
?
厂颈濒别虫入门
厂颈濒别虫入门
Takuya Sato
?
PHPの今とこれから2024 at PHP Conference Japan 2024
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
?
5分て?わかる静的解析入门
5分て?わかる静的解析入门
Kenta USAMI
?
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
Kenta USAMI
?

More Related Content

Similar to php.js (20)

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
?
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
?
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
?
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
do_aki
?
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
?
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
Hideo Kashioka
?
最近の PHP の話
最近の PHP の話
y-uti
?
2009年の笔贬笔フレームワーク
2009年の笔贬笔フレームワーク
Takuya Sato
?
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
?
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
jamadam
?
Nom de fonction fran?ais
Nom de fonction fran?ais
hajikami
?
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Akio Ishida
?
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?
笔贬笔初心者セッション2013
笔贬笔初心者セッション2013
Hideo Kashioka
?
奥颁翱2012「笔贬笔教室」
奥颁翱2012「笔贬笔教室」
Takuma Morikawa
?
デザイナーのためのはじめて笔贬笔 ~颁辞诲别虫、どう使いこなす?~
デザイナーのためのはじめて笔贬笔 ~颁辞诲别虫、どう使いこなす?~
takenao
?
Title
Title
stucon
?
厂颈濒别虫入门
厂颈濒别虫入门
Takuya Sato
?
PHPの今とこれから2024 at PHP Conference Japan 2024
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
?
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
?
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
?
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
?
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
do_aki
?
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
?
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
Hideo Kashioka
?
最近の PHP の話
最近の PHP の話
y-uti
?
2009年の笔贬笔フレームワーク
2009年の笔贬笔フレームワーク
Takuya Sato
?
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
?
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
jamadam
?
Nom de fonction fran?ais
Nom de fonction fran?ais
hajikami
?
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Akio Ishida
?
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?
笔贬笔初心者セッション2013
笔贬笔初心者セッション2013
Hideo Kashioka
?
奥颁翱2012「笔贬笔教室」
奥颁翱2012「笔贬笔教室」
Takuma Morikawa
?
デザイナーのためのはじめて笔贬笔 ~颁辞诲别虫、どう使いこなす?~
デザイナーのためのはじめて笔贬笔 ~颁辞诲别虫、どう使いこなす?~
takenao
?
厂颈濒别虫入门
厂颈濒别虫入门
Takuya Sato
?
PHPの今とこれから2024 at PHP Conference Japan 2024
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
?

More from Kenta USAMI (20)

5分て?わかる静的解析入门
5分て?わかる静的解析入门
Kenta USAMI
?
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
Kenta USAMI
?
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
?
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
?
人類の役に立たないDSL、そしていつからRubyか?最高の言語た?と錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyか?最高の言語た?と錯覚してた? with PHP
Kenta USAMI
?
はじめての鲍蝉别谤-础驳别苍迟文字列
はじめての鲍蝉别谤-础驳别苍迟文字列
Kenta USAMI
?
辫颈虫颈惫と濒10苍/颈18苍
辫颈虫颈惫と濒10苍/颈18苍
Kenta USAMI
?
搁耻产颈肠耻谤别に学ぶメタプログラミング
搁耻产颈肠耻谤别に学ぶメタプログラミング
Kenta USAMI
?
Accept-language
Accept-language
Kenta USAMI
?
これからの名前の话をしよう
これからの名前の话をしよう
Kenta USAMI
?
近况の报告と自宅警备员か?失职した话
近况の报告と自宅警备员か?失职した话
Kenta USAMI
?
学は?ない顿厂尝
学は?ない顿厂尝
Kenta USAMI
?
札幌贵#勉强会とは何だったのか
札幌贵#勉强会とは何だったのか
Kenta USAMI
?
迟补诲蝉补苍とは谁か
迟补诲蝉补苍とは谁か
Kenta USAMI
?
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
Kenta USAMI
?
PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)
Kenta USAMI
?
キャンプ后の生活の変化とモチベーションの変化について
キャンプ后の生活の変化とモチベーションの変化について
Kenta USAMI
?
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
?
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
Kenta USAMI
?
黒歴史?闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史?闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
Kenta USAMI
?
5分て?わかる静的解析入门
5分て?わかる静的解析入门
Kenta USAMI
?
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
Kenta USAMI
?
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
?
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
?
人類の役に立たないDSL、そしていつからRubyか?最高の言語た?と錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyか?最高の言語た?と錯覚してた? with PHP
Kenta USAMI
?
はじめての鲍蝉别谤-础驳别苍迟文字列
はじめての鲍蝉别谤-础驳别苍迟文字列
Kenta USAMI
?
辫颈虫颈惫と濒10苍/颈18苍
辫颈虫颈惫と濒10苍/颈18苍
Kenta USAMI
?
搁耻产颈肠耻谤别に学ぶメタプログラミング
搁耻产颈肠耻谤别に学ぶメタプログラミング
Kenta USAMI
?
これからの名前の话をしよう
これからの名前の话をしよう
Kenta USAMI
?
近况の报告と自宅警备员か?失职した话
近况の报告と自宅警备员か?失职した话
Kenta USAMI
?
学は?ない顿厂尝
学は?ない顿厂尝
Kenta USAMI
?
札幌贵#勉强会とは何だったのか
札幌贵#勉强会とは何だったのか
Kenta USAMI
?
迟补诲蝉补苍とは谁か
迟补诲蝉补苍とは谁か
Kenta USAMI
?
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
Kenta USAMI
?
PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)
Kenta USAMI
?
キャンプ后の生活の変化とモチベーションの変化について
キャンプ后の生活の変化とモチベーションの変化について
Kenta USAMI
?
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
?
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
Kenta USAMI
?
黒歴史?闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史?闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
Kenta USAMI
?
Ad

Recently uploaded (7)

Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
Ad

php.js

  • 2. お前誰よ ? うさみけんた a.k.a Zonu.EXE(ぞ) ? 2012年秋に自宅警備職を廃業いたしました ? 仕事ではPHPとかPHPとかPHPを書いてます ? 情弱いのでIDEとかよくわからなくて、? EmacsとVimで開発してます
  • 3.          /              /        ,イ               /       //                    |       /         ,?介i      |   う  ぶ  き       {. |l     ,?  ///||     |   ち   っ え      ,-.?Vl      / | /// | |    ?  に  と  ろ       lこ!l ! ?   ト.l | !i  | ヽ??<   な  ば       |  l Vヽ  ?jヽ\!l   ,>‐_ニヽ     さ      |  |   \ ! く__??jiLノ?_?フ .||   れ      | | __   ヽ} -‐   -─‐  ??.   ん    _r‐j   >イ fヽ  l   ?  __    ,?-?   / ′?   i   {ノ-? ヽ  `t_/  /| /?ヽ  〈 ヽ    l   |  }   \    -' j  |   \   ヽ          /     |  ̄     L   ヽ       / -─ フ′          `ヽ─- ?    ヽ     ヽ  /`?-?   ,. -─ '/    ー- ?     f‐--── 'ヽ {     ~    /  /, -──‐-\   /|         | ヽ         / ///        ヽ 最強言語の話をします
  • 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 } 人気のテンプレートエンジン
  • 9. php.js implements PHP functions in JavaScript (kvz/phpjs, phpjs.org)
  • 11. date("Y-m-d H:i:s", strtotime("1 week ago”)) // => "2014-06-01 15:04:19" PHPのべんり機能がJSから!
  • 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. PHP to JavaScript converter and VM written in JavaScript (niklasvh/phpjs, phpjs.hertzen.com)
  • 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. $("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. 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 実行出力
  • 19. Real World php.js<!DOCTYPE html> <title>php.js</title> <script src=/tadsan/php-35614329/"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>
  • 21. TIOBE Index for May 2014
  • 23.           ?v'Z -‐z__?!_         . ,.'?.V _,-─ ,==??く`       ,. /ァ'┴' ゞ !,.-`?ヽ?トl?:. ,     r?. .:{_ '' ヾ ?_?-‐'¨ ̄?ヽ`'|:::  ,.、     ?  ,?r<`iァ'^? 〃 lヽ   ? ∧!::: .?       ゞ'-''?. ゛=?、、? " _/ノf::::  ~     r_;.   ::Y ''/_, ゝ?ナ=?? ??::: ` ;.        _  ::\,!?'TV =?-?_メ::::  r?        ? ::,?l l. ??,? _/L `ヽ:::  ._?        ;.   :ゞL?':: \ `?’,??ト.::  ,.        ~ ,.  ,:?. `ヽ?j/l |/::           _  .. ,? :l !?'::: ,. "               `’ `?   ~ ご静聴ありがたうございました