タグ

phpとPHPに関するtaketsのブックマーク (562)

  • PHP: The Right Way

    PHP における関数型プログラミング PHP は、ファーストクラスの関数をサポートしている。 つまり、関数を変数に代入できるってことだ。 自分で定義した関数だろうがもともと組み込まれている関数だろうが、 変数で参照したり動的に実行したりできる。 何かの関数を別の関数の引数として渡すこともできるし、関数の返り値を別の関数にすることもできる(高階関数っていう機能)。 再帰 (ある関数の中から自分自身を呼ぶこと) も PHP の機能としてサポートしている。 しかし、たいていの PHP コードはそれよりも逐次処理を重視している。 新型の無名関数 (クロージャにも対応したもの) が使えるようになったのは、PHP 5.3 (2009 年) 以降だ。 PHP 5.4 からは、クロージャをオブジェクトのスコープにバインドできるようになった。 また callable のサポートも強化され、ほとんどの場合で無

    takets
    takets 2020/01/08
    phpで高階関数を使えるようになっていた
  • このPHP QAツールがすごい!2019

    twitter上でnot foundの場合は適当なパラメータつけたURLにしてください。 https://www.slideshare.net/sasezaki/php-qa2019-200006092?p PHPカンファレンス2019のスライドです https://fortee.jp/phpcon-2019/proposal/01abf927-eb46-4708-95a1-ae05b9ac2bcfRead less

    このPHP QAツールがすごい!2019
    takets
    takets 2019/12/02
  • 6年かけてこうなった!我々の開発環境の変遷と現在 / phpconokinawa2019

    PHPカンファレンス沖縄2019の登壇資料です。 https://phpcon.okinawa.jp/

    6年かけてこうなった!我々の開発環境の変遷と現在 / phpconokinawa2019
    takets
    takets 2019/10/24
    いい話
  • PhpSpreadsheetでExcelを操作する全28実例!

    さてさて、ウェブ開発の分野は特に変化のスピードが速い業界ですので、少し前まで使っていた技術がたった2、3年で古くなってしまうことも結構ザラにあったりします。 そのため普段から新しい情報は常にチェックするようにしていますが、それでも全てをカバーすることは難しいですよね。 そして、今回紹介する「PhpSpreadsheet」もそのひとつで、このパッケージは少し前まではPhpExcelという名前で公開されていました。しかし、どうやらPhpExcelは2017年に非推奨となり、現在はPhpSpreadsheetとしてリニューアルされています。(公式のGitHubによると2015年にリリースされて2017年に非推奨になっています。たった2年だったんですね・・・😅) ということで、今回はPHPExcelを作成や読み込みなどができるPhpSpreadsheetの使い方を紹介したいと思います。 最後に

    PhpSpreadsheetでExcelを操作する全28実例!
  • PhpSpreadsheetのTIPSあれこれ - Qiita

    PHPExcelの後継ライブラリ、PHPSpreadsheetもだいぶ情報が広まってきているところですが、とりわけに日語サイトでの説明が少ない、またはないものを採り上げたものです(随時追加・更新)。一部、海外サイトにも情報がほとんどない、あるいは公式サイトが間違っているものを検証、分析したものもあります。 尚、PHPExcelPHP7.1までしか対応していないため、公式サイトでもPHPSpreadsheetへの切り替えを推奨しているようです。 0 :Phpspreadsheetを使うための準備(linuxの場合) この段階から情報が錯綜しているので、方法をまとめました。当然、PHPは事前にインストールしておいてください。また、このセクションでは、ローカルインストールの場合も記述しています。 1.composerのインストール Phpspreadsheetを使うためにはPhpspread

    PhpSpreadsheetのTIPSあれこれ - Qiita
    takets
    takets 2019/10/15
  • Laravelのサービスコンテナとサービスプロバイダはどういうものなのか - Qiita

    なぜこの記事を書いたのか 今社内で Laravel 読書会をしたり、公式マニュアルの日語翻訳ドキュメントを読んだりしながら、Laravelの学習を進めているわけだが、どうもサービスコンテナとサービスプロバイダが重要であることは伝わってくるんだが、その説明がしっくりこない。 なぜなんだろうということで、ソースを読んでみたり、色んな人のまとめを見てみたり、チュートリアルの動画を見てみたりしていて、「あー、こういうものかー」ということで自分的に納得がいったので、それを書いてみたというのがこれになります。 この記事の内容は、あくまでもサービスコンテナとサービスプロバイダの役割のほんの表面をなぞっただけで、全然深堀りしてるものではないです。サービスコンテナとサービスプロバイダは当にいろいろなことをしていて、これで書いているのはごくごく入り口の部分の理解ということになります。 サービスコンテナ

    Laravelのサービスコンテナとサービスプロバイダはどういうものなのか - Qiita
    takets
    takets 2019/09/03
  • P++: 静的型付けをめざすPHP

    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++は

    takets
    takets 2019/08/13
  • ImageMagickを使って画像の種類を判別する - 明日の鍵

    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' ];

    ImageMagickを使って画像の種類を判別する - 明日の鍵
    takets
    takets 2019/08/06
    偽装の判定できるやりかたの1つ
  • 【PHP】画像ファイルの種類(拡張子やMIMEタイプ)を取得する方法 – ysklog

    プログラムでは画像を扱うことも多いかと思いますが、その画像の種類(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

    takets
    takets 2019/08/06
    楽にMIME判定する方法
  • 最高にわかるDIコンテナ(特にPHPにフォーカスした - Qiita

    DIとは Dependency Injection(依存性の注入)の略です。 依存性の注入とはなんぞやということになりますよね。そもそもプログラムで依存するってどういうこと? 依存性って何 プログラムにおける依存性というのを簡単に説明すると、ファミコンなどのカセットが良い例です。 テトリスしか出来ないゲーム機 ファミコンなどのカセットを取り替えれるゲーム機 この2つのゲーム機があった時、テトリスしか出来ないゲーム機はテトリスというゲームゲーム機が依存していることになります。 ファミコンだったらカセットを取り替えれるからゲーム機はゲームに依存してませんよね。カセットというインターフェースが同じものであれば基的には利用できることになります。 テトリス専用ゲーム機の場合 まず、テトリス専用ゲーム機をプログラムでこれを例として示そうとするとこんな感じでしょうか。 class GameConso

    最高にわかるDIコンテナ(特にPHPにフォーカスした - Qiita
    takets
    takets 2019/06/18
  • PhpStormでautocompleteを有効にする方法(CodeIgniter3利用時)

    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は分からないの

    PhpStormでautocompleteを有効にする方法(CodeIgniter3利用時)
    takets
    takets 2019/06/03
  • Blog

    明示的 意味 แพลตฟอร์มการเรียนรู้และพัฒนาทักษะด้วยเทคโนโลยี https://suin.io เป็นแพลตฟอร์มที่ให้คุณเรียนรู้และพัฒนาทักษะทางเทคโนโลยีอย่างสะดวกสบาย เรามุ่งมั่นในการให้ความรู้และประสบการณ์ที่มีคุณค่าในการพัฒนาตนเอง pascalcase

    Blog
  • PHP: 静的メソッドは何のためにあるか? - Qiita

    稿ではPHPの静的メソッドが何のためにあるかを考えるものである。 クラスとインスタンスの概念的な関係性 静的メソッドを理解するには、クラスとインスタンスの関係性を理解していなければならない。 クラスとインスタンスの関係は何だろうか? 一言で言えば、クラスは、複数のインスタンスの集合である。概念的な集合であって、インスタンスの配列という意味ではない。例えば、$user1のオブジェクトと$user2のオブジェクトを総じて、Userと呼べるのは、Userが$user1と$user2の集合だからだ。 以上の集合論的な観点を踏まえると、静的メソッドは何のためにあるかといえば、集合に含まれるすべてのオブジェクトに共通した処理(公理ともいう)を記述するためにあると言える。 逆を言えば、集合の一要素にすぎない$user1にのみ関係する処理は静的メソッドにはならない。Userクラス(ここまで読んだみなさん

    PHP: 静的メソッドは何のためにあるか? - Qiita
    takets
    takets 2019/03/12
  • 【翻訳】徹底解説! PHP のセッション - Qiita

    <?php session_start(); if(!isset($_SESSION['counter'])) { $_SESSION['counter'] = 0; } $_SESSION['counter']++; echo $_SESSION['counter']; リスト 1 のコードは、数字をインクリメントし、出力しています。ページを再読込するたびに、数字は増えていきます。このスクリプトを 2 台の異なるコンピューターで開くと、それらは別々のカウンターを持つことになります。どうなっているのでしょうか? それぞれのコンピューターはどのように識別されているのでしょうか? カウンター変数はどこに保存されているのでしょうか? セッションは ID で一意に定義されています。このセッション ID は、ユーザーのコンピューターに Cookie の状態で保存されていて、リクエストするたびにサーバ

    【翻訳】徹底解説! PHP のセッション - Qiita
    takets
    takets 2019/03/08
  • Php Inspections EA Extended 3.0.11/Ultimate 2.0.13の新機能 - Qiita

    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関連のコードを分析してバグを報告

    Php Inspections EA Extended 3.0.11/Ultimate 2.0.13の新機能 - Qiita
    takets
    takets 2019/03/01
  • vimrc

    takets
    takets 2019/02/21
    phpenv exec でphpenvのphpを実行できるぽい
  • デブサミ2019講演「レガシーとのいい感じの付き合い方」の資料を公開します。 - CARTA TECH BLOG

    ポイントメディア事業部の福田です。 Developers Summit 2019にて、「レガシーとのいい感じの付き合い方」と題して、ECナビの4年に渡る改善事例を発表しました。 講演資料を公開します。 セッション詳細 event.shoeisha.jp 公開資料 当日の反響(togetter) togetter.com 発表を終えて ネタが地味目なので、当日どれくらい来ていただけるのか少し不安でしたが、満員+立ち見の盛況でした。 当日ご参加いただいた方、ありがとうございました。 アイスブレイクとして、会場のみなさんには「何年もののレガシーシステムに取り組んでいるか?」について質問させていただいたところ、「10年以上」という方が半数超え(※壇上からの主観です)で、レガシーシステムの問題は顕在化していることを実感しました。 目立たずに水面下でじわじわと苦しめられてる問題だと思うので、私達のよ

    デブサミ2019講演「レガシーとのいい感じの付き合い方」の資料を公開します。 - CARTA TECH BLOG
    takets
    takets 2019/02/20
  • PHP: Builderパターンの実装手順 #1【基礎実装】 - Qiita

    Builderパターンとは、生成過程を抽象化したり、コンストラクタの引数が多かったり、コンストラクタの引数を作るのが複雑なときに使うデザインパターンのひとつだ。稿では、引数が多すぎるコンストラクタの解消法のひとつとしてPHPでのBuilderパターンの実装方法を紹介する。 なお、稿で実装したコードの完全版はGitHubで公開している。 お題のモデル Builderパターンを実装するに当たってのお題として、Eメールを扱う。Eメールは、To, CC, From, Subject, Bodyの5つの情報を持っていることにする。これを素直にモデルにするとこうなる: コンストラクタには5つ引数がある。この実装では、Emailクラスを利用したいクライアントコードは次のようになる: new Email( ['alice@example.com'], ['bob@example.com'], [],

    PHP: Builderパターンの実装手順 #1【基礎実装】 - Qiita
    takets
    takets 2019/02/14
  • PHPコードの静的解析ツールたち - Innovator Japan Engineers’ Blog

    複数人で開発していると、コードの書き方(インデントやブレスでの改行など)について意見が分かれることがあるかと思います。 また、PHP7.0以降で使えるタイプヒントは、宣言した型が不一致だとエラーになってくれますが、実行するまでエラーになるかわかりません。 安心安定の開発にはこれらが障害になりますので、静的解析によって排除しましょう。 今回はそのためのツールと簡単な使い方を書きます。 PHP_CodeSniffer PHPMD PHPStan Larastan 余談 おわりに PHP_CodeSniffer github.com 決められたコーディング標準を守っているかをチェックするツールです。 ここではPSR-12への準拠をチェックする例を示します。 導入 ルールファイル(phpcs.xml)作成 実行 # Composerで導入 $ composer require --dev squi

    PHPコードの静的解析ツールたち - Innovator Japan Engineers’ Blog
    takets
    takets 2019/02/08
    phpmd, phpcsの自分ルールの設定方法
  • PHPではじめるCQRS

    PHPカンファレンス仙台2019の発表資料です。

    PHPではじめるCQRS
    takets
    takets 2019/02/04
    これはわかりやすい。