2021/12/21 PHPerKaigi petit - PHP8.1リリース祝賀会 でのトーク「モダンPHPテクニック 12選 ―PsalmとPHP 8.1で今はこんなこともできる!―」のスライドです。発表時点からごくわずかに加筆修正した部分があります。 https://phperkaigi.connpass.com/event/233022/Read less
問題 ファイルの内容の種類を、マジックナンバーをを見て判定したい。 (フォーマット識別子、マジックバイト) 答え 自作するとこんな感じ。 <?php function gazoHantei($filename) { //先頭数文字を取得する.巨大なファイルでも先頭だけ見る. $magic = file_get_contents($filename, false, null, 0, 12); $type = ''; if (strpos($magic, 'GIF') === 0) { //GIF87a,GIF89a $type = 'GIF'; } else if (strpos($magic, "\x89" . 'PNG') === 0) { $type = 'PNG'; } else if (strpos($magic, "\xFF\xD8") === 0) { //FF D8 DD E
概要 タイトルの通り、入社してからコードレビューで指摘された基本的なコードの書き方や、実装方法について、自分の戒めとしてまとめたいと思います。 なお、言語はPHPを使用しています。 コードの書き方に関する内容 インデントは揃える 基本中の基ですが、インデントは揃えるようにしましょう。 また、エディタの設定によっては自動フォーマットされる場合もあるため、チームで開発する際は改行やインデントのルールを統一しましょう。 Atomの自動フォーマットの設定に関しては下記のような記事を書いています。 【Atom】エディタの自動フォーマットの設定を統一しよう - Qiita Docコメントは必ず書く 新たなメソッドの作成や、返すパラメータの変更などの作業をした際は、必ずDocコメントの作成・修正を行いましょう。 /** * メソッドの説明 * * @param int $id * @return boo
PHPとPythonとRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 本稿では3言語の連想配列の従来実
この記事はPHP Advent Calendar 2019の5日目の記事です。 はじめに 私は6年前に、PHP Advent Calendar 2013として「PHPだってシェル経由でないコマンド呼び出し機能が欲しい」という記事を書きました。その中で、OSコマンドインジェクション対策の根本的かつ安全な対策は「シェルを経由しないコマンド呼び出し」であることを指摘した上で、末尾に以下のように書きました。 PHPコミッタのみなさま、PHP5.6の新機能として、シェルを経由しないコマンド呼び出しの機能を追加できませんか? 現実には当時からPCNTL関数にてシェルを経由しないコマンド呼び出しはできたのですが、当関数の使用が難しいことと、CLI版あるいはCGI版(FastCGIは可)のPHPでないとサポートされていないなどの制限があり、popenやproc_openなど使いやすいコマンド呼び出し関数に
スポンサードリンク 配列の差分を取得するには、array_diff()関数を使います。 array_diff()関数が値のみの比較に対して、array_diff_assoc()関数はキーと 値の両方をそれぞれ比較します。
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
本連載では軽量PHPフレームワークであるSlimを紹介していきます。フレームワークと言えば、重厚長大なもの、いわゆるフルスタックフレームワークが多い中で、あえて軽量フレームワークを取り上げます。軽量ゆえのメリットを味わっていただこうと思います。その第1回である今回は、フレームワークとは何か、Slimとは何か、何がどう軽量なのかといった概要解説とSlimを動かすための環境構築を紹介します。 フレームワークとSlim この連載で紹介していくSlimは軽量フレームワークと言われています。Slimの公式サイトでは「a micro framework for PHP」と表現されています。では、何がどう「軽量」なのでしょうか。そもそも、フレームワークとは何なのでしょうか。そこから話を始めたいと思います。 フレームワークとは フレームワークは、和訳すると「枠組み」や「骨組み」となります。非常に幅広い意味
IDやパスワードを一元管理するために、Active Directoryと連携したいというケースがあったりしますが、ADへ認証やパスワード変更などをPHPから行うためのメモです。 LDAPを通して簡単に認証やパスワードなどの属性値変更が行えます。 PHPは5.3系を使っています。 Windows側はWindows2008およびWindows2012で動作確認しています。 これは特に難しいことなく、PHPのldap_bind を使えば認証が行えます。 <?php $host = "ldaps://192.168.0.100"; $ldapConn = ldap_connect($host); // userprincipalnameを指定 $userId = "username@testdomain.test"; $userPass = "HogeHoge12"; ldap_set_optio
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
<?php // ldap バインドを使用する $ldapdn = 'dc=ldap-server, dc=sample.jp'; // ldap rdn あるいは dn $ldaprdn = 'cn=Manager, ' . $ldapdn; // ldap rdn あるいは dn $ldappass = 'managerpass'; // パスワード $ldap_user = 'hoge'; $ldap_newpass = 'hogehoge'; // ここLDAP設定により変わるので適当ですが、ちゃんと設定しないと動きません $ldap_fulldn = 'uid='.$ldap_user. ',ou=People,'. $ldapdn; echo date("Y/m/d H:i:s ") . "Connecting ...". "<br />"; // ldap サーバーに接続する
メルカリが利用する「PHPUnit」を3世代分アップグレードできた理由:Intelの開発モデルを参考に(1/2 ページ) 日本PHPユーザ会が開催した「PHP Conference 2018」で、メルカリの柏木大助氏は、メルカリの主要サービスのバックエンドを担うプロジェクトで利用していた「PHPUnit 4」を「PHPUnit 7」にアップグレードした理由や、作業方法を説明した。 2018年12月15日、日本PHPユーザ会はPHP Conference 2018を開催した。本稿では、メルカリの柏木大助氏の講演「大規模PHPプロジェクトでPHPUnitを3世代アップグレードするためにやったこと」の内容を要約してお伝えする。 柏木氏は、メルカリのバックエンドを支えるプロジェクト「mercari-api」で起きた「PHPUnit 4」のバージョンアップに関する問題を解決し、PHPUnit 7にア
<< 2008/01/ 1 1. 年賀状 2. ゴビウス 3. [Ruby] ZSFA -- Rails Is A Ghetto 2 1. 新年会 3 4 1. The Mythical 5% 5 6 7 8 1. [言語] Substroke Design Dump 2. [言語] A programming language cannot be better without being unintuitive 3. [OSS] McAfee throws some FUD at the GPL - The INQUIRER 9 1. [言語] Well, I'm Back: String Theory 2. [言語] StringRepresentations - The Larceny Project - Trac 10 1. [Ruby] マルチVMでRubyを並列化、サンと東大が
Mercari Advent Calendar 2018 の 8 日目は Backend チームの @hidenorigoto がお送りします。 来週末12/15(土)には、PHPカンファレンスが開催されます。メルカリでは、これから開催される3つのPHP系カンファレンスをスポンサーとして支援しています。 PHPカンファレンス 2018 2018/12/15(土) PHPカンファレンス仙台 2019 2019/01/26(土) PHPerKaigi 2019 2019/03/29(金)〜2019/03/31(日) この記事では、メルカリにおけるPHPとの関わり方と、PHPカンファレンスやPHPコミュニティに向けて、メルカリエンジニアからの一言メッセージを紹介します。 メルカリでは現在、システムと組織のMicroservies化を進めています。Microservicesの開発にはGoを選択して
PHPでフォームなどのプログラムを作成し、いざサーバーで動作確認をしていると日本語(マルチバイト文字)が「???」のように文字化けすることがあります。PHPでアプリケーションを制作したことのある方であれば一度はこんな経験をされたことがあるはず。そこで今回は、PHPプログラムで日本語が文字化けしたときに確認しておきたいPHPの設定項目をご紹介します。 なぜ 文字化けするのか? PHPはサーバーサイドで動作するプログラム言語です。フォームを例にたとえると、送信ボタンを押したタイミングで一度フォームの内容がサーバーに送信され、その結果をブラウザが出力します。 ブラウザとサーバーが対話式にキャッチボールをしている、そんなイメージです。そこで大切なのは、双方を共通の文字コードで対話させること。フロントの 文字コードがUTF-8ならばサーバーも UTF-8 で言葉の内容を理解できるように設定しておかな
はじめに CentOS6系の標準リポジトリのPHPバージョンは5.3、 CentOS7系の標準リポジトリのPHPバージョンは5.4です。 それ以外のバージョンを使用したい場合は、リポジトリを追加してのインストール作業が必要になります。 今回、PHP5.6, PHP7.0, PHP7.1のインストール手順について記載します。 (※2017-07-23時点の情報です) Yumリポジトリ追加 EPELとRemiリポジトリを追加します。 EPELリポジトリ [CentOS6系] yum install epel-release または rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [CentOS7系] yum install epel-release または rpm -Uvh http
初めに 瞬殺ではありました。 記録の為に記載するが、誤り等あれば指摘して下さい。 インストール環境 CentOS release 6.7 64ビット 必要な作業。 1. ImageMagickのインストール yum install ImageMagick で一発。 2. PECL imagickのインストール pecl install imagick で済まそうと思ったが、5.4>=のPHPが必要と言われて撃沈。 pecl clear cache した後、 pecl install imagick-3.2.0b2 してみたら、通った。 別のWindows環境でPHP5.4で通ったバージョンを指定したまで、もっと新しくても行けるかも知れない。 3. php.iniへの記載 ファイルの最後に [PECL] extension=imagick.so 記載。 4. httpd再起動 Windows
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く