タグ

PHPとrefに関するglcsのブックマーク (17)

  • 配列演算子オーバーロードもしくは PHP 5 の配列エミュレート機能全般 - 大カフェイン

    正確にはオーバーロードじゃないけど。 PHP でも [] でアクセスできるクラス作れたんだね。 参考 PHP: ArrayObject - Manual 分かりやすい実装例。 PHP: オブジェクトのイタレーション - Manual イテレータについて全般。 SPL-StandardPHPLibrary 詳細なリファレンス。インターフェースのリファレンスが見つからないときに。 <?php /** * ArrayAccess を実装すると [] が使えるようになる。 * * @link http://www.php.net/~helly/php/ext/spl/interfaceArrayAccess.html SPL-StandardPHPLibrary: ArrayAccess Interface Reference */ class A implements ArrayAccess {

    配列演算子オーバーロードもしくは PHP 5 の配列エミュレート機能全般 - 大カフェイン
    glcs
    glcs 2008/06/05
    PHPのこの辺りはリファレンスの情報が不十分だしDateTimeオブジェクトとか実装が中途半端だし中途半端すぎる。
  • PHPでOOP

    2008-03-01 PHPのOOP構文2008-02-28 MVCフレームワーク デザインパターン UML2008-02-24 オブジェクト指向で作ってみる その3 mvc12008-02-23 MenuBar FrontPage 掲示板を作ってみる2008-02-17 オブジェクト指向で作ってみる その2 PHPのオブジェクト指向プログラミングを勉強しましょう。 どういう順番で勉強していけば分かりやすいでしょうか? PHPでOOP このページは、2chのWEBプログラミング板にある「PHPでOOP」スレッドのまとめページです。 1 :1 ◆SWtzLesEmM :2007/02/23(金) 13:35:52 PHPを使ってプログラミングするとき、プロシージャ指向(手続き型、構造化プログラミング)でもできますが、オブジェクト指向を使った場合の恩恵を享受するために、PHPでオブジェク

    glcs
    glcs 2008/06/05
  • 【 ほでなすPHP 】 PHP5の基本 -> オブジェクトの代入

    オブジェクトの代入 まず、オブジェクトとはオブジェクト型の変数で、文字列型の変数には文字列が格納されているように、オブジェクト型の変数にはオブジェクト(クラスのインスタンス)が格納されています。 次に、変数に変数を代入するという事は、右辺の変数の値を左辺の変数にコピーするという事で、変数にオブジェクトを代入するという事は、右辺のオブジェクトを左辺の変数にコピーするという事であり、代入の結果、左辺の変数は右辺の変数と全く同じオブジェクト(クローン)になります。 これはPHP4の場合で、PHP5では違った結果になります。 PHP4でのオブジェクトの代入 PHP4で、変数にオブジェクトを代入しようとする場合、他の型の変数の場合と同様、単にコピーを代入するかリファレンスを代入するかの2通りありました。以下のサンプルと結果をご覧下さい。 <pre> <?php class HUMAN{ var $n

    glcs
    glcs 2008/05/27
    PHPの怪しい仕様
  • PHP コード最適化 Best Practices 63+ - カタコト日記

    みたいなタイトルの記事を Digg 経由で発見。チートシート代わりにと思い超訳。*1 A Software Architect PHP 最適化 ベストプラクティス! 01. static にできるメソッドは static として宣言しよう。(4倍速い) 02. echo の方が print より速い。 03. echo '文','字'; (カンマ区切り)の方が、'文'.'字' (ドット連結)より速い。 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。 05. 大きい配列のような変数は unset() してメモリを解放しよう。 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。 07. require_once はハイコストなのです。 08. include や require でファイルはフルパスで指定しよう。 09

    PHP コード最適化 Best Practices 63+ - カタコト日記
  • @IT:PHP5で広がる!開発環境(1) - 例外処理の実装を把握する(1/2)

    第1回 例外処理の実装を把握する 亀 大地 アシアル株式会社 2008/5/7 PHP4のサポートが終了し、これまでPHP4が中心だった開発現場でも、いよいよPHP5への移行を視野に入れる時期が来た。PHP5ならではの機能を生かした開発を進めるためのポイントを紹介する(編集部) PHP4のアップデートが2007年12月31日で終了し、セキュリティフィックスについても2008年の8月8日をもって打ち切られる予定だ。これによって、いままでPHP4を中心に開発を行っていた現場でも、PHP5による開発体制への移行が進んでいくことが予想される。 PHP4で構築した現行のシステムをPHP5に移行するかどうかは判断に迷うところだが、これから新規に開発していくシステムは、よほどの理由がない限りPHP5での開発が中心になっていくだろう。 もちろん、開発基盤がPHP5に移行したからといって、開発手法がさほど

  • Ruby と PHP の配列操作比較

    配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ (いやなブログ) 配列操作の比較表は自分のためにも作ったことはなかったので、別に混乱はしないけど、Ruby の分を残して PHP との比較表を起こしてみた。気づいてないだけでもっと賢く書く方法がありそうな気もするけど、とりあえず出しちゃえ。あ、バージョン書いてなかった。PHP4 です。5 は知らない。(マニュアルも見てない。)

    glcs
    glcs 2008/05/06
    PHPの悲しさ
  • getter, setterマジックメソッド__get, __setの変な挙動 - ぎじゅっやさん

    PHP 09:26:38, by dozo , 452 words, 2341 views   オブジェクト指向言語では当たり前なのか、 PHPの言語仕様が変なのか、 私の感覚がハズレまくっているのか、 その辺は解らないが、ちょっとハマッたのでメモ書きしておこう。 (ノ・・)ン。。。。。。(((●コロコロッ PHP5にはマジックメソッド(Magic Method)なるメソッドが存在する。 クラスを作成するとあらかじめ引っ付いているメソッドのことだ。 種類は __construct__destruct__call__get__set__isset__unset__sleep__wakeup__toString__set_state__clone__autoload 例えばgetter, setterに当たる__get, __setメソッド。 PHP4

  • そのis_numeric()は適切ですか?

    こんにちは。hnwです。今回はPHPの関数is_numericの使いどころについて問題提起をしてみます。また、PHPのソースコードを読んで、is_numericの実際の挙動を調べてみました。PHPのis_numericは、引数が「数値っぽいかどうか」をチェックする関数です。 is_numeric()って? まずはリファレンスマニュアルを見てみましょう。 指定した変数が数値であるかどうかを調べます。数値文字列は以下の要素からなります。(オプションの)符号、任意の数の数字、(オプションの)小数部、そして(オプションの)指数部。つまり、+0123.45e6 は数値として有効な値です。16 進表記(0xFF)も認められますが、この場合は符号や小数部、指数部を含めることはできません。 PHPマニュアル - is_numeric 何が問題か 上のようにマニュアルに書いてあるにもかかわらず、ユーザーの入

  • PHP E_STRICTで表示されるエラーメッセージを調べてみた

    年内のPHP4サポート終了に向けて、PHP5への移行が進む昨今です。 PHP5で推奨されていないスクリプトをチェックするのがE_STRICTです。E_STRICTが有効なのは分かっていたのですが、実際にどんなスクリプトがE_STRICTに引っかかるのかが、あやふやでした。 そこでE_STRICTで出力されるメッセージをPHPのソースから抜き出してみました。どのようなスクリプトがE_STRICTに引っかかるのか(引っかからないか)のヒントになればと思います。 ちなみにE_STRICTの活用方法としてマニュアルには[-l]オプションによるチェックが書かれていますが、スクリプトを実行しないと発生しないE_STRICTもあるので、実際には実行して確認する方が良いです。 1. Accessing static property %s::$%s as non static インスタンス変数をクラス変数

  • __PHP_Incomplete_Class を防ぐ富豪アプローチ

    調べると session start が auto になってて必要なファイルが読み込めてませんとかいう間抜けな事例が多いこの問題は、別に session とは無関係にオブジェクトのシリアライズを使う場面でよく出くわす。 原因はいたってシンプルで、unserialize() しようとしているオブジェクトの必要としているファイルがすべて揃っていないとこういう現象が起きる。 そもそも unserialize() してできあがったオブジェクトというのはクラス名そのものは保持しているけれどもクラス定義も、もちろんメソッドも保持していないオブジェクトで、自身が保持しているクラス名の定義を、現在読み込んである PHP スクリプトから探し出して当てはめようとする。 当然この段階で include されていないクラス定義を利用することはできず、結果、__PHP_Incomplete_Class という特殊な

  • SET NAMESは禁止?

    CakePHPは、PHP言語の高速開発用フレームワークです。日々、発展を遂げる各種フレームワークの動向を見極めつつ、日発のCakePHP応援ブログとして、最新情報をお届けします。 PHPセキュリティに詳しい大垣さんのブログ SET NAMESは禁止 (引用) ============ 脆弱性の説明は面倒ですが注意事項は簡単です。「DBMSをアプリケーションから利用する場合、文字エンコーディング設定は必ずAPIを利用する」つまり「SET NAMES(SET CLIENT_ENCODING等も)は禁止」です。 ============ 日語以外の記事では、「SET NAMESを使ってはいけない」とまで書いている記事が見つからなかったので、いまだすんなりと納得できていないのですが、今後、MySQL 4.1以上を入れた共有サーバなんかではどうすればいいんでしょうか…。 “SET NAMES

    SET NAMESは禁止?
  • 変数バインディングを使ってもSQLインジェクション対策にならない - Webと何かとその近所

    気がつけば4半期に一度更新するかどうかという状況になっています。 書きたい事があっても、いざ書こうと思っていろいろ調べていると新事実が次々と浮かび上がり、結局書き終えるのに丸一日かかってしまったりして、挙げ句でき上がった文章があれなのでその出来映えに泣きたくなり、結局更新から遠ざかってしまうのです。 そうこうしているうちに、書こうと思っていた事と近い内容の記事をid:t_komuraさんの所で見つけたので思わずコメントしてしまいました。 すでにid:hoshikuzuさんによるまとめもありますが、コメントだけなのもあんまりなので敢えて書こうと思います。びっくりするほど時期逃し過ぎ。 MySQL 4.1以降での文字の扱い MySQLはバージョン4.1以降で文字の扱いが大きく変わりました。 それまでのMySQLは、クライアント側で使っている文字(バイトの並び)がそのままDBに格納され、取得する

    変数バインディングを使ってもSQLインジェクション対策にならない - Webと何かとその近所
  • リフレクション

  • 【 ほでなすPHP 】 PHP5の基本 -> リフレクション

    リフレクション PHP5になって、「リバースエンジニアリング(ここでは“スクリプトを解析する行為”を指す)」を行う為の機能、「リフレクション」が搭載されました。 「リフレクション」によって、関数やクラス、メソッド等を解析する事が出来ます。例えば、指定したクラスの構造(継承するクラス名や実装するインターフェイス名、備えるプロパティやメソッド等に関する情報)の出力、指定したインターフェイスを実装するか等のチェック、備えるメソッド名等の取得が行えます。 リフレクタ/「Reflector」インターフェイス/「Reflection」クラス スクリプトの解析は、関数なら関数用に、クラスならクラス用に定義されたクラス、各種用「リフレクタ」を使用して行います。 「リフレクション」に関係するインターフェイス・クラスは、以下のような継承関係で定義されています。 Exception | +--- Reflect

  • 新規

    盾集域名停放是全球优质行业导航备案网站领导者 为中小企业提供数字化、快速化、轻量化、精准化的网站链接服务 dns1.dopa.com,dns2.dopa.com 版权所有 站内容未经书面许可,禁止一切形式的转载 © CopyRight 2023 盾集域名停放click.com.cn    浙ICP备20018420号-2 杭州盾集网络有限公司

  • 【 ほでなすPHP 】 PHP5の基本

    続・PHPの基::PHP5の基 PHP4からPHP5になって、クラス・オブジェクト関係の仕様が大きく変更・機能強化され、また「例外処理」その他の機能が追加されました。 このページは「PHPの基PHP4対応のPHP講座)」のページの続編(PHP5の基編)です。このページでは、PHP5で変更・追加された各種機能について解説しています。 目次 オブジェクトの代入 【clone()命令】 メンバのアクセス制限 【public、protected、private】 スタティックメンバ/クラス定数 【::演算子、static、self、parent、const】 コンストラクタとデストラクタ 【__construct()、__destruct()】 特殊メソッド/オートロード 【__*()メソッド、__autoload()関数】 オブジェクト引数のクラス指定 例外処理 【try、thro

  • ADODB Manual

    PHPのためのADOdbライブラリ original document ADOdb関連文書 V4.62 2 Apr 2005 (c) 2000-2005 John Lim (jlim#natsoft.com) このソフトウェアはBSDスタイルとLGPLを使いデュアルライセンスされています。これはコンパイルされて所有権のある市販製品で使えることを意味しています。 役に立つADOdbのリンク: Download   Other Docs 序文 ユニークな特徴 どんなふうに人々はADOdbを使っているか 機能要望とバグ報告 インストール 最小インストール コードの初期化とデータベースへの接続 データソース名(DSN)   接続例 高速ADOdb - チューニングTips 安全なADOdbのハッキングと変更 PHP5の機能 foreach i

  • 1