PHPにおいて、ある配列が連想配列として使われているのかどうかを判別したい場合どうすればいいのか。 色々調べてたらこんな記事を発見しました。 <?php function is_hash(&$array) { return array_keys($array) !== range(0, count($array) - 1); } テレパス・ラボ : 連想配列 判定関数(is_hash) なるほど。 array_keysで配列のキー一覧を取得し、そのキー一覧が0からの連番になっているかどうかを比較すれば、対象の配列が配列なのか連想配列なのかを判別できるという理屈ですね。 確かにこれで判別ができそうです。 ですがひとつだけ気になる部分があって、array_keysやrangeを使って一時的な配列を確保しているのは無駄が多いのではないかと。 対象となる配列が大きければ大きいほどメモリ効率が悪くな
PHP 書いてると、$this-> をよく書く割に Shift を 2 回も使わないといけなくてすごく書きづらい。 あまりに書きづらいので @ で $this-> を出すようにした。確か PHPer って @ は滅多なことがないと使わない*1んだよね。 " after/ftplugin/php.vim inoremap <buffer> @ $this-> これでよし。と言いたいところだけど、コメントの中で @return とか書くときに誤爆する。ので、コメント内と、ついでに文字列内では展開しないようにした。 " after/ftplugin/php.vim function! s:at() let syntax = synstack(line('.'), col('.')) let name = empty(syntax) ? '' : synIDattr(syntax[-1], "na
前回の Hello World のサンプルプログラムで一通りの PHP Extension の作成手順を見てきました。しかし helloworld() の様に引数も返値も無い関数だけではプログラミング言語として不便ですので今回は PHP と PHP Extension におけるデータタイプの詳細と引数、返値の渡し方について見ていきましょう。 PHP のコードから C言語で書かれたコードへとデータをやり取りする上で「型」についての疑問が浮かび上がります。動的形付けされた PHP の変数を静的に形付けされた C言語で扱うにはどうしたらよいのでしょうか。 まずは、PHP 内部でのデータ表現を知るために PHP のソースを覗いて見ましょう。 php-x.x.x/Zend/zend.h より typedef union _zvalue_value { long lval; /* long value
Case Test Simple "Hello World" page output, Simple MVC logic(Router -> Controller -> Viewer), No Database Connections, No complex logic. Hardware platform CPU: Intel Core i5 750 (2.67GHz x4) RAM: 4GB Software Environment Debian 6.0.4 x86_64 (2.6.32-41) apache 2.2.16 (mpm-prefork,mod-php5) php 5.3.10 php-apc 3.1.9 (Optimization for include/require) Copy all projects to /dev/shm/* (Optimization for
PHPのことを一晩中考えてる皆さん!Autoload使ってますか! - 「PHP5.3世代の最新フレームワーク使ってるから当然使ってるよ!」(キリッ!) - 「is_aの挙動の変更はまさにPHPっぽいと断言できる!」(キリッ!) - 「vendor/.composer/autoload.phpをリクワイアするのハもうオーベイではジョーシキデース!」(キリッ!) なるほど!! 残念!そちらのPHPのオートローディング機能そのものではなく、 http://jp.php.net/autoload theseer/Autoload のほうです。 https://github.com/theseer/Autoload PHPカンファレンスのスライドにも載っけてます。 http://www.slideshare.net/sasezaki/php-9151036/51 PHPカンファレンスでも話した通り
遂にPHP5.4.0の安定版がリリースされました。 魅力的なリリースだが互換性には注意が必要 PHP5.4は、トレイト(traits)、単純化された配列定義、組み込みWebサーバなどの新機能が導入されるだけでなく、PHP5.3と比較して実行速度の向上や、消費メモリの低減を実現しており、かなり魅力的なアップデートになっています。その一方、移行ガイドにあるように、PHP5.3系以前で運用していたサービスをPHP5.4にアップデートすると、様々な互換性問題が発生します。PHP5.4.0は、5.4系の最初のリリースであり、実績が十分にありません。今直ぐにアップデートする必要性はありませんが、PHP5.3系のメンテナンスが打ち切られるまでに5.4に移行できるよう、早め早めの対策が求められます。 PHP5.3は1年半でメンテナンス終了 PHP5.2は2010年12月にメンテナンスが打ち切られました(ま
こんな感じでVim (GVimでもOK)でデバッグできるのでめちゃくちゃ便利。 端末上でできるのもかなりうれしい。 PHP5/Ubuntu 8.10編 XDebugをインストールする sudo apt-get -y install php5-xdebug XDebugの設定 sudo vim /etc/php5/apache2/conf.d/xdebug.ini xdebug.iniに以下を追加 [debug] ; Remote settings xdebug.remote_autostart=off xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=localhost xdebug.remote_port=9000 ; General xdebug.au
2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに
PHP5.4の正式版のリリースが迫ってきています。Trait、Short Array Syntacなど魅力的な機能も多数実装されていますが、そんな理由ではPHP5.4は絶対に導入できません。新機能を喜ぶのはプログラマであり、プログラマはPHPのバージョンの決定権などありません。PHPのバージョンを5.4に切り替えてもらうためには、サーバ管理チームや経営陣が喜ぶ理由が必要です。ということで、PHP5.4のパフォーマンスについての記事をまとめてみました。 1. PHP5.4 で Symfony2 は速くなるのか? Synfonyのテストに掛かる時間と消費メモリ PHP5.3.8 19.6秒 264.0MB PHP 5.3.9RC2 19.0秒 191.5MB PHP 5.4.0RC2 14.2秒 136.8MB 2割以上高速化しています。 2. チューニンガソンで優勝してきました WordPr
こんにちはこんにちは!! Webプログラミングしてますか! よく「PHPはセキュリティがダメ」とか言われてるよね。 でもそれって、べつにPHPが悪いんじゃなくて、 たぶん、セキュリティとかが、まだよくわからない人が多いだけなんじゃないかな。 がんばって勉強しようと思っても、なんだか難しい理屈が並んでいたりするしね…。 なので今日は、セキュリティ対策について、 「これだけやっとけば、わりと安全になるよ」ってことを、初心者むけに、大雑把に書いてみます! 理屈がわからなくても、最初はコピペでも、 なにもやらないより、やったほうがきっとマシになる! 1. XSS対策 動的なものを表示するとき、全部エスケープすればokです! (NG) あなたの名前は <?= $name ?> ですね! ↓ (OK) あなたの名前は <?= htmlspecialchars($name, ENT_QUOTES) ?>
単純な関数に関してのユニットテストは簡単ですが、DBを伴うユニットテストについては自動化が面倒な状況にありました。RubyOnRails等で使われている、fixturesの考えに基づいて、以下のような方法で自動テストを行うことができるようになったので記録しておきます。 概要 テスト用に用意したDBに対して、CSVで作成したテスト用のデータをimportしながら、各クラスをテストしておく。CSVで予めテストデータを作成しておくため、テストコードの中に予め「メールアドレスが〜であるもの」という条件でテストコードを書くことができる。 前提条件 PHPのCLI版で、PDO, pgsqlが利用出来ること テスト用のデータベースを用意しておくこと RoRでは、production(本番)、development(開発)、test(テスト)を用意することになっている 下記のオプションでCLI版のPHPを
最近 HTML5 化した Slideshare ですが, エラーで表示できないスライドが多すぎてまともに閲覧できないようです. この記事に掲載している Flash 版は今まで通りの問題なく表示できるのですが... スライドが完成したのが勉強会への出発 15 分前で, 通しで練習することすらできず, 発表はかなりひどいものとなっていまいました. 最低限, スライドの流れぐらいは頭の中に入れて発表すべきですね… スライドだけ見てわかるような作りにはなっていないので, 以下で補足したいと思います. ただし, 序盤は省略し, 本論となる書法編とパターン編についてのみとなります. それぞれ該当するスライド番号も付記してありますので, よければご活用ください. 書法編 1: ヘルパーメソッドを使う (25 ~ 30) テスト対象のオブジェクト, それを生成するのに必要な依存オブジェクトの生成には, ヘ
PHPによるデザインパターン入門 秀和システムから発売となった「PHPによるデザインパターン入門」(ISBN4-7980-1516-4・ 2006/11/23発売)を執筆しました(共著です)。 「PHPを使ってGoFパターンを見ていこう」的な書籍になっています。GoFパターンについては、それぞれパターンの説明とサンプルコードという構成です。サンプルコードは、CentOS4.4/Windows XP(SP2)+PHP5.1.x/5.2.0で動作確認しています。 目次は以下の通りです。 1章 デザインパターンの世界へようこそ デザインパターンって何? デザインパターンとは? オブジェクト指向 GoFパターン デザインパターンのメリット・デメリット デザインパターンを使うメリット デザインパターンを使うデメリット PHPとオブジェクト指向 PHPとは? PHP5でのオブジェクト指向開発 2章
Installed and aliased as "vi" by default on most linux distributions Most mainframes will have it Cross platform -- available on Windows and Mac OSX, as well as others. In fact, it was originally written for Amiga OS, for which I have a certain fondness as that was my first PC. I can use the same editing environment on my desktop, my laptop, my virtual machines, and my servers.
Vimテクニックバイブル ?作業効率をカイゼンする150の技 作者: Vimサポーターズ出版社/メーカー: 技術評論社発売日: 2011/09/23メディア: 単行本(ソフトカバー)購入: 19人 クリック: 661回この商品を含むブログ (37件) を見る 待ちに待ったVimテクニックバイブルで今までの環境を一気に変え始めています TDDBCでid:t-wadaさんに道具の大切を教わったので プログラマの命とも言えるエディタを鍛えていきます! とりあえずVundleでプラグインをガンガン入れていたのですが quickrun.vimでPHPUnitの設定をしていると、、 テスト結果にグリーンバーが見えない。。。 色々格闘した挙句 自分でoutputterを書けば良い!ということで 以下の感じになりました "" vim-quickrun " init let g:quickrun_confi
PHP 5.4 Advent Calendar 2011 19 日目です。 前回は @cocoitiban さん でした。 htmlspecialchars() のオプション追加については個人的にも気になっていたところ(Symfony2 の https://github.com/symfony/symfony/commit/053b42158e2f887b54a3e87977303d219530082f というコミットで気づいた)で、ふむふむと読ませていただきました。たとえば、文書型を考慮するようになると SGML 的に (あれ、 HTML 的にだっけ?) 違法である NULL 文字とかがさっくり消えて、 IE が NULL 文字を無視したりして XSS に繋がりうる問題 が回避できるようになったりするんですかねえ。 さて、これまでの Advent Calendar で触れられてきたように
たまたまCakePHPのFilelLogエンジンのソースを見ていたら $options += array('path' => LOGS); という書き方があって「あれ、この書き方知らない」となったので確認した。 結果はタイトル通り、「keyがあれば何もしない、keyがないなら値を追加する」だった。 <?php $options = array(); $options += array('path' => 'LOGS'); var_dump($options); // array(1) { // ["path"]=> // string(4) "LOGS" // } $options = array('path' => null); $options += array('path' => 'LOGS'); var_dump($options); // array(1) { // ["path
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く