PHP

メールによる画像のアップロード

スマホからは <input type="file"> でファイルをアップロードできないっぽいので、メールによるアップロードで実現する方向になりそうなので、やってみた。 メールによる方法のほかにも、FacebookとかがやってるJavaScriptによる方法もあるっぽいけど。 QdmailReceiverを使う 結…

絵文字の削除

あるサイトのPCサイトとスマホサイト作ってて、スマホで入力された絵文字を削除するという必要に迫られたのでメモ。理想は、 <input type="password"> の時みたいに、絵文字のキーボードを利用不可にして、絵文字を入力できないようにすることだけど。できないっぽい? ガラケーで使…

シリアライズ

PHP

あるクラスのインスタンスをシリアライズしたいけど、そのインスタンスには速度を稼ぐためにキャッシュを持っていたり、DBとの接続オブジェクトのインスタンスも持っていたりするので、そういうのはシリアライズしたくない。 こういう、あるフィールドはシリ…

関数の渡し方

PHP

今まですごい勘違いしてた。 今までこれで動いてた理由は、 一つ目のdoSomethingの呼び出しでは、引数が自動的に'callback'に変換される 文字列オブジェクトに対して関数呼出しの演算子()を使うと、文字列が関数名…

PEAR::MDB2のプリペアドステートメント

はまちちゃんも「SQLインジェクションに対してはプリペアドステートメントが有効」って言ってた(5分でできるPHPセキュリティ対策 - ぼくはまちちゃん!(Hatena))ので、やってみることにした。 だけどエラーに悩まされたので、そのことを書いておく。 やっ…

エラーメッセージの抑制

僕はXAMPPの上でPHPを書いているけど、デフォルトの設定だと、PEAR::MDB2を使うと以下のようなエラー(警告?)が大量に出る。 Deprecated: Assigning the return value of new by reference is deprecated in <ソースファイル名> Strict standards: Decla…

PEARでupgradeできない

upgradeとかupgrade-allしようとしたら、 Error getting channel info from pear.php.net: SECURITY ERROR: Will not write to <ファイルのパス> as it is symlinked to <ファイルのパス> - Possible symlink attackってエラーが出て、できなかった。 グ…

オブジェクトのクローンの作製

PHP

クローンを作るための__cloneってメソッドがあるらしいけど、あんまり調べずに、C#の感覚で使ってたら、全然違ってハマりましたよ、という話。ましたっていうか現在進行形だけど。 ってやると__cloneなるメソッドが呼ばれるらしいけど、呼ばれる__cloneメソ…

連想配列のキーには、整数か文字列しか使えない

PHP

解決した。 key は、整数 または 文字列です。 あるキーが、整数の標準的な表現形式である場合、 そのように解釈されます (つまり、"8" は 8 として解釈されます。一方、 "08" は "08" として解釈されます)。 key に浮動小数点数値を指定すると、 その値は i…

PHPの連想配列に実数のキーを使ってみた

PHPの連想配列に対し、1未満の実数値をキーとしていくつか要素を追加してみたけど、どういうわけか要素が1個から増えない。キーが勝手にintになってしまい、最後の要素だけが残ってるのかな?

配列はどう実装されているのか?

PHP

翻訳その1. 元ネタ:http://stackoverflow.com/questions/247467/how-are-associative-arrays-implemented-in-php (その魚拓) 質問 Can someone explain how PHP implements associative arrays? What underlying data structure does PHP use? Does PHP …

配列と連想配列に関して

PHP

連想配列の内部実装が気になったのでtwitterでつぶやいてみた。ハッシュ表で実装されている事と、有用なURLを教えていただいた。 @yagiey_tw PHPの配列は ordered map なのですが、その実装はハッシュテーブルだそうです( http://goo.gl/yAGDS )。foreach は…

Cレベルの低レベルなレイヤでは、配列はどう実装されているのか?

PHP

翻訳その2。だんだん和訳が目的っぽくなってきてめんどい。とりあえずやっつけで書いとく。こっちの方が新しいらしい。 元ネタ:http://stackoverflow.com/questions/2350361/how-is-the-php-array-implemented-on-the-c-level (その魚拓) 質問 The PHP ar…

タイプミス

PHP

ちゃんとcatchしてる例外のはずなのに、なぜエラーになるのか30分くらい悩んだ。 こんな感じ → http://ideone.com/ceqCl コンパイラさん何か言ってよ...。何のために型を明示させてんスか。 あと、例外とは関係無いけど、変数名も良くタイプミスする。宣言を…

少し調べてみた

PHP

一番基本的なところを少々... クラスは参照型っぽい? http://ideone.com/YntrV C#ではクラスは参照型だけど、PHPも同じっぽい?代入して、左辺の変数をいじったら、右辺のオブジェクトに影響が出た。 参照の参照?...なの?ホントに? http://ideone.com/9t…

PHPUnit入れてみた

今更ながらPHPUnitの存在を知ったので、XAMPP環境@Windows XPにインストールしてみた。 $pear install -a phpunit/PHPUnitすると、 phpunit/**** requires PEAR Installer (version >= 1.9.1), installed version is 1.9.0ってエラーになってるところが何か…

例外の階層

PHP

標準のPHPで提供されている例外にどんなものがあるのか調べたのでメモメモ。 Exception すべての例外の基底クラス ErrorException エラー例外 LogicException 論理式が無効な場合にスローされる例外 BadFunctionCallException 未定義の関数をコールバックが…

PHPでオーバーロードしたい

オーバーロードは空気のように当たり前の存在だったので、当然のようにPHPでやってしまってエラーが出た。エラーメッセージの意味を理解するのに数秒かかったくらいだ。そのとき、 オーバーロードは実行時のオブジェクトの型ではなく、変数の型が分からない…

PHP間でのオブジェクトの受け渡し

先日の話の続きで、PHP間でデータを受け渡しに関して。その方法をリサーチして、自分なりにいくつかの候補に絞って、それぞれについて実験してみたのでメモメモ。情報を送信する側のPHPをsend.php、受信する側のPHPをreceive.phpとし、受け渡しするデータは…

PHPはじめた

PHP

仕事でPHPを使い始めたが慣れてないので非常に苦労している。特に変数名に$付け忘れたり、変数名をタイポしたり等が多い。eclipseとかIDE使えばもっとはマシになるんだろうけど。本当に初心者くさい間違いでイライラしつつも、大学でC言語を始めた時の感覚を…