タグ

php7とphpに関するshimookaのブックマーク (16)

  • PHP7が羨ましかったのでpixivのPHP高速化についてドヤ顔してきた - pixiv inside [archive]

    最近TODOが増えすぎてきたので、自分専用Trelloを導入して捗っている @edvakf です。 PHP7 Casual Talks #2「速さ」 というイベントを知り、PHP7にはまだ行けていなくて悔しい思いをしていたら、 今回のテーマは「速さ」。...と書きましたがPHP7, Hack, HHVM等に気持ち関係していたら何でも良いです(Casual!)。 という記述を見つけたので、「これなら喋れるで!」ということで主にPHP的な高速化の話をしてきました。 DBまわりの高速化などはまだまだ話しきれないほどあるのですが、どこかの機会にお話しできたらと思います。 pixivのHHVMの話はWEB+DB PRESS Vol.88にも詳しく書きましたので、時代はPHP7よりHHVMやで!という方はそちらもどうぞ。 WEB+DB PRESS Vol.88 作者: 佐々木拓郎,高柳怜士,鶴原翔夢,

    PHP7が羨ましかったのでpixivのPHP高速化についてドヤ顔してきた - pixiv inside [archive]
  • GitHub - TysonAndre/runkit7: Go to runkit7/runkit7 : Runkit that (mostly) works in PHP7! (method and function manipulation)

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - TysonAndre/runkit7: Go to runkit7/runkit7 : Runkit that (mostly) works in PHP7! (method and function manipulation)
    shimooka
    shimooka 2016/12/15
    素敵
  • PHP 7 の無名クラスから考えるクラスの在り方 - Shin x Blog

    いよいよ、PHP の次期メジャーバージョンの PHP 7 がリリースされます。すでに、RC4 が登場しており、来月予定されているリリースが楽しみです。 PHP 7 には幾つかの新機能が盛り込まれているのですが、その中でも気になるのが、無名クラスです。 無名クラスとは 無名クラスは、クラスの定義をすることなく、オンザフライでオブジェクトを生成する機能です。匿名関数(ネイティブクロージャ)のクラス版だと思うとイメージしやすいです。 無名クラスは、new classで、生成します。下記が、そのサンプルです。ここでは、sayメソッドを持つ無名クラスを定義して、$objectに格納しています。$object の say メソッドを実行すると、'Hello'という文字列が出力されます。 <?php $object = new class { public function say() { echo

    PHP 7 の無名クラスから考えるクラスの在り方 - Shin x Blog
  • PHP5とPHP7の違い(extension編) - Qiita

    PHP5用のextensionは変更なしではPHP7上で動きません。#ifで分岐して両対応にするのも厳しい印象で、多くのextensionは別ブランチで開発しているようです(調べた範囲ではAPCu、msgpack、memcachedなどが別ブランチで開発しているようです)。 今回PHP7用の実験的なextension「php7_explorer」を書いてみました。書いてみてPHP5用のextensionとの違いを改めて実感したので、ざっくりの違いをまとめてみます。 「おまじない」を書かなくてよくなった PHP5までは、Zend APIのプロトタイプ宣言最後にTSRMLS_DCを、呼び出し時の引数リストの最後にTSRMLS_CCをつけるという「おまじない」が必要でした。これはZTS (Zend Thread Safety)サポートのため、必要なときだけ余計な引数を引き回すようなマクロ定義です

    PHP5とPHP7の違い(extension編) - Qiita
    shimooka
    shimooka 2015/09/18
    拡張モジュールの対応具合によって、PHP7への移行が進むかどうかかなり違いそう。。。runkit対応マダー
  • PHP7における内部値の表現―パート1 : PHP5とPHP7のzvalの仕組み | POSTD

    前回の投稿では、PHP7に取り入れられた improvements to the hashtable implementation(ハッシュテーブル実装の改善) について書きました。それに続く形で、今回はPHPの全般的な値の新しい表現形式に目を向けてみます。 取り上げる内容の量から考えて、2つのパートに分ける予定です。このパートでは、PHP5とPHP7の間におけるzval(Zend値)の実装の違い、それから参照の実装について説明し、パート2では、文字列やオブジェクトなど、個別の型の実現について、詳細に検討していこうと思います。 PHP5のzval PHP5では、zval構造体は次のように定義されます。 typedef struct _zval_struct { zvalue_value value; zend_uint refcount__gc; zend_uchar type; zend

    PHP7における内部値の表現―パート1 : PHP5とPHP7のzvalの仕組み | POSTD
  • PHP7でクラスはバラバラになった

    PHP7では無名クラスが導入されます。 PHP7調査(26)無名クラスの導入 - Qiita これ、単に構文だけの話にせず、「クラスの第3の能力が単独で切り出された」と捉えると面白いのかなと思いました。 クラスが持つ3つの役割 クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー 「コーディングを支える技術」の西尾泰和氏によると、クラスには ユーザー定義型 実装の再利用の単位 インスタンス生成器 の3つの役割があるといいます。 クラスが扱いづらい概念だとすれば、それはこの3つの能力をまとめて持っているからです。 PHPのユーザー定義型、インターフェース PHPの場合、タイプヒントがありますし、定義したクラスは後から拡張することができません(オープンクラスではない)。 if ($obj instanceof FooClass) { //... } この「$objがFooClassのインスタ

    PHP7でクラスはバラバラになった
    shimooka
    shimooka 2015/06/08
    『『クラスを定義するとか古い』『クラス厨は老害』そんな風に言われる時代が来たら面白いですね』ふーん
  • PHP7で変わること - hnwの日記

    次の土曜日5/30のPHPカンファレンス関西2015で基調講演(10:30-11:15)をさせて頂くことになりました。タイトルは「PHP7で変わること——言語仕様とエンジンの改善ポイント」です。チケットは既に売り切れているそうですが、参加者の方は早起きして来て頂けると幸いです。 このところQiitaに「PHP7調査」というシリーズを連投していたのも発表を意識してのことです。PHP7の新機能を一つずつ実際に試してみて、その結果を簡単にまとめていました。 今回は発表前の区切りとして、私の書いたPHP7関連の記事・プレゼン資料を一覧形式でまとめなおしてみます。PHPカンファレンス関西2015ではこれらの内容を踏まえつつ、気になる点を重点的にお伝えしたいと考えています。 内部実装のリファクタリング PHP7の目玉と言える、速度改善に関わる内容がほとんどです。 PHP7はなぜ速いのか - Slide

    PHP7で変わること - hnwの日記
  • PHP7調査(26)無名クラスの導入 - Qiita

    PHP7から無名クラスがサポートされました。次のような文法で、クラス定義なしでオブジェクトが生成できます。 通常のクラス定義と同様にextendsやimplementsなども書くことができます。 この構文はnewまで必須です。newなしで無名クラスが第1級オブジェクトになりそうに見えますが、現時点ではそのような記述はできません。無名クラスのインスタンスを作ることだけが可能です。 ユースケース RFCによれば次のような状況で便利なのでは?とのことでした。 テスト用のモックオブジェクトで、その場限りでインターフェースを実装する状況。 そのクラスを外部に公開したくないような場合 オブジェクトメソッドが呼ばれたりするのは構わないが、継承して使われるのがイヤな場合…? 自明な実装でオートローダーを叩きたくない 1クラス1ファイルというルールで運用している場合、1ファイル増えてしまうのが悲しいこともあ

    PHP7調査(26)無名クラスの導入 - Qiita
  • PHP7調査(11)??演算子の新設 - Qiita

    PHP7で2項演算子「??」が新設されます。左オペランドがnull以外の値であればその値を、そうでなければ右オペランドを返すようなものです。

    PHP7調査(11)??演算子の新設 - Qiita
    shimooka
    shimooka 2015/04/23
    『??演算子はisset()と同様に未定義値をチェックしてもエラーになりません』これはでかい!
  • PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita

    (2015/07/02追記:PHP 7.0.0alpha2に合わせて修正しました) PHPのエラーは、エラー文言を表示するだけの警告・注意と、その場で処理を終了してしまう致命的エラー(fatal error)の2種類に大別できます。 ところで、PHP5の致命的エラーには不便な点があります。それは、set_error_handler()やその他の方法でエラーハンドリングできず、必ず終了してしまう点です。これでは致命的エラーをユニットテストするのも不便ですし、ReactPHPのようにサーバ動作させるようなプログラムも安心して使えません。 PHP7では致命的エラーが例外として実現されるようになり、エラーハンドリングの自由度が格段に上がりました。この変更の概要を紹介します。 例外のクラス階層の変更 まず、PHP7で例外クラスの階層がどう変わるかを説明します。PHP5までの例外のクラス階層は次のよう

    PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita
  • PHPのJSONライセンス問題が一応決着 - hnwの日記

    2012年頃に、PHPのJSONエクステンションのソースコード中に次のようなライセンス文言が含まれていると話題になりました。 The Software shall be used for Good, not Evil. これはJSONライセンスと呼ばれるライセンスの一文です。「このソフトウェアを良いことに使うのはいいけど、悪いことには使っちゃダメ」といったところでしょうか。 これはフリーソフトウェアの定義に反しており*1、各種LinuxディストリビューションでJSONエクステンションを配布できないことになるため、ちょっとした騒動になったというわけです。 稿ではこのJSONライセンスへの対応が現在どうなっているかを紹介します。 各種Linuxディストリビューションの対応 PHPのJSONエクステンションはjson_encode()やjson_decode()などの重要な関数を提供するエクス

    PHPのJSONライセンス問題が一応決着 - hnwの日記
  • PHP7調査(10)名前空間のuseをまとめて書けるようになった - Qiita

    PHP7から、名前空間を使うときに複数のuseを中カッコでまとめて書くことができます。 具体的には次のように書けるようになりました。 <?php use Symfony\Component\Console\{ Input\InputInterface, Input\InputArgument, Input\InputOption, Output\OutputInterface, Output\ConsoleOutputInterface };

    PHP7調査(10)名前空間のuseをまとめて書けるようになった - Qiita
    shimooka
    shimooka 2015/04/14
    ほー
  • PHP7で追加される整数型、浮動小数点型タイプヒントの問題点

    (Last Updated On: 2018年8月13日)PHP7では整数型、浮動小数点型、配列型のタイプヒントが追加されます。データ型をより厳格に取り扱うようになるのは良い事ですが、データ型を変換してしまうため問題となる場合もあります。 データ型は指定した型に変換すればよい、という単純な物ではありません。私はデータ型を変換しない方のRFCを支持していました。残念ながらこちらのRFCでなく、問題が多い方のRFCが採用されることになりました。 参考 PHP7のタイプヒントの使い方 タイプヒントとは? そもそもタイプヒントを使ったことが無い方も多いと思います。PHPはオブジェクトのクラスを「タイプヒント」として指定することが従来から可能でした。例えば、 function (MyClass $obj) { // Do something } のようにタイプヒントとして”MyClass”を指定し、

    PHP7で追加される整数型、浮動小数点型タイプヒントの問題点
  • 【導入決定!】PHP7で実装されるスカラー型宣言とは? | 東北ギーク

    * NaN でなく PHP_INT_MIN から PHP_INT_MAX までの範囲内の値に限る ** 数値形の文字列のみ。数値形の文字列に他の文字が続く場合も使えるが、 Notice が出る *** __toString メソッドを持つもののみ 弱い型検査モードで行われる暗黙の型変換は、PHP が従来他の構文(算術演算子や条件式、組み込み関数の呼び出しなど)で行ってきたのと同等のものです。 厳密モード 一方、厳密な型検査のモードを使う場合は、関数は宣言されたのと正確に一致する型のみを受け付けるようになります(int → float の拡大変換をのぞく)。 ファイルの先頭に declare(strict_types=1); と書くことで、そのファイル内での関数呼び出しの際に厳密モードでの型検査が行われるようになります*1。 以下のように使います。 <?php declare(strict_

    【導入決定!】PHP7で実装されるスカラー型宣言とは? | 東北ギーク
    shimooka
    shimooka 2015/03/20
    STHやっと入るっぽいけど、正直『緩いモード』っているんか?何のためのSTHよ?
  • PHP 7 Feature Freeze

    Today was the feature freeze for PHP 7. That means no new votes can be started for a feature that is aimed at PHP 7.0, and would instead have to go into PHP 7.1. Instead of heading out to St Patrick's Day with a bunch of New Yorkers making dubious claims about their tenuous connection to Irish ancestry as an excuse to drink, I thought it would be a good time to review some of the more recent RFCs

  • PHP7の現状

    (Last Updated On: 2018年8月13日)PHP7が今年の秋リリースされる予定です。まだまだ多くの変更が行われる予定ですが、現状を簡単にまとめてみたいと思います。代表的な物のみ取り上げています。 ご存知ない方の為に書いておきます。現在リリースされているPHPPHP5です。次のPHPPHP7になり、PHP6はリリースされません。PHP6をUnicodeをネイティブ文字列としてサポートするバージョンとして開発されましたが、文字エンコーディングチェックを内部で自動的に行おうとするなど、無駄が多く遅いため破棄されました。(文字エンコーディングのバリデーションは来アプリでするものです)このため、PHP6はスキップされ次のPHPPHP7になります。 追記:PHP7.0は既にリリースされています。概要はPHP 7.0の概要・新機能・互換性、詳しくはマイグレーションドキュメントをご

    PHP7の現状
  • 1