https://fortee.jp/phperkaigi-2020/proposal/c8d6b9b1-29e4-48bd-b8bd-9f43f74d6265
PHP における関数型プログラミング PHP は、ファーストクラスの関数をサポートしている。 つまり、関数を変数に代入できるってことだ。 自分で定義した関数だろうがもともと組み込まれている関数だろうが、 変数で参照したり動的に実行したりできる。 何かの関数を別の関数の引数として渡すこともできるし、関数の返り値を別の関数にすることもできる(高階関数っていう機能)。 再帰 (ある関数の中から自分自身を呼ぶこと) も PHP の機能としてサポートしている。 しかし、たいていの PHP コードはそれよりも逐次処理を重視している。 新型の無名関数 (クロージャにも対応したもの) が使えるようになったのは、PHP 5.3 (2009 年) 以降だ。 PHP 5.4 からは、クロージャをオブジェクトのスコープにバインドできるようになった。 また callable のサポートも強化され、ほとんどの場合で無
13. 2008 ~ 2011 PHPSpec 2008 PHP 5.3 2009 PHPMD 2010 Mockery 2010 0.6.0 travis ci PHPサポート 2011 『REAL-WORLD SOLUTIONS FOR DEVELOPING HIGH- QUALITY PHP FRAMEWORKS AND APPLICATIONS』2011 php-project-wizard PHPUnit, phpcs , phpmd, phploc などを導入するためのプロジェクトセット Behat 2011 1.0.0 composer 2011 php-cs-fixer 2012 15. 2012 ~ 2015 nikic/php-parser 2012 (0.9.0) Trismegiste/Mondrian 2013 ダイ
さてさて、ウェブ開発の分野は特に変化のスピードが速い業界ですので、少し前まで使っていた技術がたった2、3年で古くなってしまうことも結構ザラにあったりします。 そのため普段から新しい情報は常にチェックするようにしていますが、それでも全てをカバーすることは難しいですよね。 そして、今回紹介する「PhpSpreadsheet」もそのひとつで、このパッケージは少し前まではPhpExcelという名前で公開されていました。しかし、どうやらPhpExcelは2017年に非推奨となり、現在はPhpSpreadsheetとしてリニューアルされています。(公式のGitHubによると2015年にリリースされて2017年に非推奨になっています。たった2年だったんですね・・・😅) ということで、今回はPHPでExcelを作成や読み込みなどができるPhpSpreadsheetの使い方を紹介したいと思います。 最後に
PHPExcelの後継ライブラリ、PHPSpreadsheetもだいぶ情報が広まってきているところですが、とりわけに日本語サイトでの説明が少ない、またはないものを採り上げたものです(随時追加・更新)。一部、海外サイトにも情報がほとんどない、あるいは公式サイトが間違っているものを検証、分析したものもあります。 尚、PHPExcelはPHP7.1までしか対応していないため、公式サイトでもPHPSpreadsheetへの切り替えを推奨しているようです。 0 :Phpspreadsheetを使うための準備(linuxの場合) この段階から情報が錯綜しているので、方法をまとめました。当然、PHPは事前にインストールしておいてください。また、このセクションでは、ローカルインストールの場合も記述しています。 1.composerのインストール Phpspreadsheetを使うためにはPhpspread
なぜこの記事を書いたのか 今社内で Laravel 本の読書会をしたり、公式マニュアルの日本語翻訳ドキュメントを読んだりしながら、Laravelの学習を進めているわけだが、どうもサービスコンテナとサービスプロバイダが重要であることは伝わってくるんだが、その説明がしっくりこない。 なぜなんだろうということで、ソースを読んでみたり、色んな人のまとめを見てみたり、チュートリアルの動画を見てみたりしていて、「あー、こういうものかー」ということで自分的に納得がいったので、それを書いてみたというのがこれになります。 この記事の内容は、あくまでもサービスコンテナとサービスプロバイダの役割のほんの表面をなぞっただけで、全然深堀りしてるものではないです。サービスコンテナとサービスプロバイダは本当にいろいろなことをしていて、これで書いているのはごくごく入り口の部分の理解ということになります。 サービスコンテナ
PHP: pplusplus:faq PHP 8から、PHPは「PHP」と「P++」という2つの言語を提供するようになる。P++はPHPとの下位互換性を削りながら除々にPHPを静的型付け言語にする試みだ。 PHP開発者の中には2つの流派がある。PHPの源流であり現在の形である動的型付け言語としてのPHPを良しとする流派と、PHPをより強い静的型付け言語へと発展させたい流派だ。良い悪いの問題ではない。どちらの流派も正当な理由がある。しかし、ゆるふわな動的型付け言語とガチガチの静的片付け言語は同じ一つの言語として同居できない。 そこで、コードネームP++として、PHPを静的型付け言語に発展させる新しい言語の開発が提案された。P++はforkではなく、PHPと同じコードベースを共有する。PHP 8のバイナリはPHPとP++を同時に実装する。言語の切り替えは何らかの宣言によって指定する。 P++は
ImageMagickのidentifyコマンドを使って画像の判定ができる。 拡張子はJPGと言いながら実はPNGだった例 $ identify -format %m ./path/to/image-file.jpg PNG 特定のディレクトリ以下のすべてのファイルの種類を表示するならこんな感じ for imagefile in $(find ./ -name *.jpg); do format=$(identify -format %m $imagefile) echo "${format} ${imagefile}" done jpg以外のファイルを探すならこんな感じ for imagefile in $(find ./ -name *.jpg); do format=$(identify -format %m $imagefile) if [ $format != 'JPEG' ];
プログラムでは画像を扱うことも多いかと思いますが、その画像の種類(jpgなのかpngなのかgifなのか)を取得したい時があります。 ここでは画像の拡張子やMIMEタイプを取得する方法をまとめています。 pathinfo関数で拡張子を取得 pathinfo関数を使えば、画像のファイル名から拡張子やディレクトリ名などが取得できます。 pathinfo(画像までのパスやURLを指定); 引数に画像までのパスやURLを指定することで、以下の4つの戻り値が得られます。また、第2引数を指定することもできます。 Array ( [dirname] => ./img(URLを指定した場合は「http://ysklog.net/img」のようになる) [basename] => 20140123.jpg [extension] => jpg [filename] => 20140123 ) ということで、p
DIとは Dependency Injection(依存性の注入)の略です。 依存性の注入とはなんぞやということになりますよね。そもそもプログラムで依存するってどういうこと? 依存性って何 プログラムにおける依存性というのを簡単に説明すると、ファミコンなどのカセットが良い例です。 テトリスしか出来ないゲーム機 ファミコンなどのカセットを取り替えれるゲーム機 この2つのゲーム機があった時、テトリスしか出来ないゲーム機はテトリスというゲームにゲーム機が依存していることになります。 ファミコンだったらカセットを取り替えれるからゲーム機はゲームに依存してませんよね。カセットというインターフェースが同じものであれば基本的には利用できることになります。 テトリス専用ゲーム機の場合 まず、テトリス専用ゲーム機をプログラムでこれを例として示そうとするとこんな感じでしょうか。 class GameConso
PHP FrameworkにCodeIgniter3を採用したプロジェクトをPhpStorm(ver.9.0.2)で編集している。PhpStormのメソッド・プロパティ補完機能(autocomplete機能)はとても便利で、コード記述を強力にサポートしてくれる。また、定義にジャンプする機能もコードの実装を追うのにとても有益だ。 参考: Code Completion - Help | PhpStorm しかしCodeIgniterの機能を使ったソースコードは思うように補完機能が働かない。 CodeIgniterではModelやContorollerでクラスを利用する時にローダーを利用するが、$this->loadするとインスタンスは$this->xxxにセットされ、$this->xxx->funcのように利用する。 このとき「$this->xxx」が何者なのかPhpStormは分からないの
明示的 意味 แพลตฟอร์มการเรียนรู้และพัฒนาทักษะด้วยเทคโนโลยี https://suin.io เป็นแพลตฟอร์มที่ให้คุณเรียนรู้และพัฒนาทักษะทางเทคโนโลยีอย่างสะดวกสบาย เรามุ่งมั่นในการให้ความรู้และประสบการณ์ที่มีคุณค่าในการพัฒนาตนเอง pascalcase
本稿ではPHPの静的メソッドが何のためにあるかを考えるものである。 クラスとインスタンスの概念的な関係性 静的メソッドを理解するには、クラスとインスタンスの関係性を理解していなければならない。 クラスとインスタンスの関係は何だろうか? 一言で言えば、クラスは、複数のインスタンスの集合である。概念的な集合であって、インスタンスの配列という意味ではない。例えば、$user1のオブジェクトと$user2のオブジェクトを総じて、Userと呼べるのは、Userが$user1と$user2の集合だからだ。 以上の集合論的な観点を踏まえると、静的メソッドは何のためにあるかといえば、集合に含まれるすべてのオブジェクトに共通した処理(公理ともいう)を記述するためにあると言える。 逆を言えば、集合の一要素にすぎない$user1にのみ関係する処理は静的メソッドにはならない。Userクラス(ここまで読んだみなさん
PHP のセッションについて詳しく書かれた記事を見つけたので、訳しました。 原文は PHP Sessions in Depth です。 セッションを全く知らない人向けというよりは、セッションを普段なんとなく使っている人向けの記事かと思います。 個々のトピックスについてはもっと深く書かれた記事もあると思いますが、複数のトピックスをまとめて扱った記事は少ないように思ったのが訳そうと思ったきっかけです。 なお、今回はかなり意訳気味なのでご了承ください。あと、個人的な勉強も兼ねて訳注をかなり付けています。 徹底解説! PHP のセッション PHP のセッションは軽視されがちです。セッションとは、ページをまたいで持続し、ユーザーに固有のデータを保持する魔法の配列のことです。大半の Web アプリケーションにおいて、それは夢のようなもので、無くてはならないものです。しかし、間違った使い方をすると、セッ
Php Inspections (EA Extended)とPhp Inspections (EA Ultimate)はPhpStormのInspection(コード検査)機能をさらに強力なものに拡張してくれるPHPerなら絶対に入れておきたいプラグインです。無償で使えるのがEA Extendedで、それに更に検査ルールを加えたハイエンドの有償版がEA Ultimateです。 本稿では、そのEA Extended 3.0.11(2019/2/23リリース)、EA Ultimate 2.0.13(2019/2/25リリース)に追加された新たなチェックツールを紹介します。 EA Extended/EA Ultimate共通の新機能 PHPUnitのバグとベストプラクティス 検査名: PhpUnit: bugs and best practices PhpUnit関連のコードを分析してバグを報告
ポイントメディア事業本部の福田です。 Developers Summit 2019にて、「レガシーとのいい感じの付き合い方」と題して、ECナビの4年に渡る改善事例を発表しました。 講演資料を公開します。 セッション詳細 event.shoeisha.jp 公開資料 当日の反響(togetter) togetter.com 発表を終えて ネタが地味目なので、当日どれくらい来ていただけるのか少し不安でしたが、満員+立ち見の盛況でした。 当日ご参加いただいた方、ありがとうございました。 アイスブレイクとして、会場のみなさんには「何年もののレガシーシステムに取り組んでいるか?」について質問させていただいたところ、「10年以上」という方が半数超え(※壇上からの主観です)で、レガシーシステムの問題は顕在化していることを実感しました。 目立たずに水面下でじわじわと苦しめられてる問題だと思うので、私達のよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く