サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
www.doyouphp.jp
Builder ~生成の手順と手段を分離する 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 生成+オブジェクト はじめに ここではBuilderパターンについて見ていきましょう。 「builder」とは、「建築者」や「建設業者」の意味を持つ単語ですが、たとえば、家を建てることを考えてみましょう。最終的に建てられる家は、「どの様な順序で、どこに何を配置していくか」という「手順」と、「柱や壁、屋根に何を使うか」という「材料」によって大きく違ってきます。 Builderパターンは、この「手
Observer ~状態変化を通知する 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 振る舞い+オブジェクト はじめに ここではObserverパターンについて説明します。 observerという単語は「observe」する人、つまり「観察者」「観測者」の意味です。ということは、「観察」する対象はやはりオブジェクトということになりそうですね。 実際そのとおりで、観察対象のオブジェクトが変化したときに通知してもらい、その変化を他のオブジェクトにも伝えるためのパターンです。 では、Obs
Composite ~木構造を表す 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 構造+オブジェクト はじめに ここではCompositeパターンについて見ていきましょう。 「composite」とは「合成物」「混合物」という意味を持ちます。ということは、Compositeパターンは、何かを混ぜるためのパターンなのでしょうか? Compositeパターンは、単一のオブジェクトとその集合のどちらも同じように扱えるようにするためのパターンです。つまり、「単一のオブジェクト」と「オブジェク
Strategy ~戦略を切り替える 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 振る舞い+オブジェクト はじめに ここではStrategyパターンについて見ていきましょう。 strategyという単語は「戦略」「作戦」「方針」「方策」などの意味があります。 Strategyパターンは、この「作戦」や「戦略」を1つのクラスにまとめ、「作戦」や「戦略」の単位で切り替えられるようにするパターンです。 たとえば CSVファイルもしくはXMLファイルを読み込んでデータ処理をおこなう場合を考
Iterator ~順々にアクセスする 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 振る舞い+オブジェクト はじめに ここではIteratorパターンについて説明します。 「iterate」には「繰り返す」「反復する」といった意味ですので、「iterator」は「反復するもの」となるでしょうか? 名前から想像できるように、Iteratorパターンはオブジェクトに対する反復操作をおこなうための統一APIを提供するパターンです。 たとえば PHPで複数の値を含むリストを表現する場合、ど
TemplateMethodパターン ~処理を穴埋めする 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 振る舞い+クラス はじめに ここではTemplate Methodパターンについて説明します。 templateという単語には、「型板(かたいた)」や「鋳型」といった意味があります。いずれも「型」が定義されていて、できあがりの形は同じになります。しかし、何を使って作るかによって、具体的にどのようなものになるが変わります。 Template Methodパターンも「型」となるクラスが
Proxy ~具体的な実装を隠す身代わり 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 構造+オブジェクト はじめに ここではProxyパターンについて説明します。 Windowsには「ショートカット」という機能があります。たとえばブラウザのショートカットをデスクトップ上などに登録しておき、実行したい時にそのショートカットをダブルクリックすることで、ショートカットの実体であるブラウザが実行されます。他のアプリケーションやテキストファイルでも同様の動作をおこないます。このように「実際は
Command~要求をクラスで表す 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 振る舞い+オブジェクト はじめに ここではCommandパターンについて説明します。 commandという単語は「命令」という意味ですね。「コマンド」と書くと、DOSプロンプトやUNIX、Linuxのコンソールで入力するコマンドを連想される方も多いかと思います。 Commandパターンはその名の通り「命令」そのものをクラスとして表すパターンです。しかし、「命令」をクラスにするとどの様なことになるのでしょ
Chain of Responsibility~処理のたらい回し 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 振る舞い+オブジェクト はじめに ここではChain of Responsibilityパターンについて説明します。 「Chain of Responsibility」とは長い名前ですね。直訳すると、「責任の鎖」となるでしょうか。それぞれのクラスは「責任」を持っています。その責任を明確にするよう設計をおこなうことが、オブジェクト指向設計では大きなポイントとなります。 Cha
Adapterパターン~APIを変更する 絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) GoF本における分類 構造+クラス、オブジェクト はじめに ここではAdapterパターンについて説明します。 adaptという単語には「適合させる」とか「なじませる」「適応させる」という意味があります。つまり、adapterとは「適合させるもの」という意味になります。 日本語でも、「アダプタ」という言葉はあちこちで聞く言葉だと思います。ACアダプタやネットワークアダプタ、一昔前に全盛を誇ったISDN回線で必要になるタ
Factory Method~インスタンスを生成する工場 GoF本における分類 生成+クラス はじめに ここでは、Factory Methodパターンについて説明します。 「factory」とはもちろん「工場」という意味です。パターン名に使われているほどですから、もちろんそれなりの理由があります。工場とは一般的に何かを製造する施設ですよね・・・ここまで言うと、カンのするどい人でしたらもう気づいているかもしれません。 では、なぜ「工場」という名前が使われているのか、これから説明していきます。 たとえば たとえば、作曲家と作品のデータがCSVファイルとして保存されており、これを表示する場合を考えてみましょう。 CSVファイルの1レコードには作曲家名とその作曲家の作品名が存在します。表示ルールとして、複数の作品を持つ作曲家の場合は初めに作曲家名を表示し、続けて作品名を表示するものとします。 ●
Singletonパターン~いくつ作るかを制限する GoF本における分類 生成+オブジェクト はじめに ここではSingletonパターンについて説明します。 singletonとは「一枚札」「一つずつ起こるもの」といった意味を持つ単語です。 Singletonパターンは、生成するオブジェクトの数を1つに制限するためのパターンです。では、なぜオブジェクトの数を制限する必要があるのでしょうか? 早速、見ていきましょう。 たとえば クラスのインスタンスはnew演算子を使って生成されます。たとえば、5回new演算子を使った場合、5つのインスタンスが生成されます。当然、1000回実行すると1000個のインスタンスが生成されます。 しかし、インスタンスを生成するという処理は、コストがかかる処理です。オブジェクトの使いまわしをしないで毎回newするのは、大きなコストがかかってしまうことを意味します。
初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売) そもそも「パターン」とは何でしょうか? 英語の「pattern」が日本語に翻訳される場合は、「模範」「手本」「模様」「体系」などになりますが、日本語で「パターン」というと、すぐに思い浮かべるのは、毎回同じ手を使う事を表す「ワンパターン」や、幾何学模様など繰り返し模様を指す「パターン」がありますね。電子分野では「回路パターン」や「パターン認識」、少し離れると、ファッションデザイン界では、デザインの原型やその原型をおこす型紙のことも、「パターン」と呼ぶようです。 このように「パターン」とは、 とある一定の事象が繰り返される規則的なもの 模範や手本となるもの を指す言葉である、ということになると思います。 それでは、本書で扱う「デザインパ
Welcome to Services_MixiAPI! This documentation was generated by phpDocumentor v1.4.0
秀和システムさんから発売となった「はじめてのPHPプログラミング 基本編―5.3対応 (TECHNICAL MASTER 54)」(ISBN4-7980-2082-6・ 2008/10/24発売)を執筆しました(共著です)。 PHPの入門書です。 きっかけは「まえがき」に書いていますが、例の「中級って何?」なネタです。「書けるようになりましたー」な人ばっかりといわれるPHPですが、実際にそこで満足してしまって、成長が止まっちゃう(止めちゃう)人が多いんじゃなかろうかという気がしてます。 で、そこから次のステップに行くためには、Webアプリケーションのベースとなった技術や周りにある技術はもちろんのこと、中規模のコードを書く際にどういったやり方をしていくのかとか、プログラミング以外の物事を知る必要がありますが、入門書の段階からそういうものがあるということを知る、もしくはその中身をイメージだけで
技術評論社さんから出ているWEB+DB PRESS Vol.44から「ステップアップ!PHP」というタイトルで連載を書いてます。ここでは、技術評論社さんに許可をして頂いた校了後の最終ゲラのpdfを公開しています。今後、発売後4ヶ月経過したものについては順次公開する予定です。 WEB+DB PRESS vol.44 【第1回】PHPのコマンドラインオプションを解析する pdfをダウンロード WEB+DB PRESS vol.45 【第2回】PHPでWebサービスAPIにアクセスする……HTTP超再入門 pdfをダウンロード(2008/10末公開予定) WEB+DB PRESS vol.46 【第3回】PHPのコーディング規約 pdfをダウンロード(2008/12末公開予定)
サンプルは、EXPERIENCEで実際に確認できるようにしてますので、気になる方は見てみてください。 ついに来ました!interfaceがPHP5から導入されました。 イメージ的にはJavaと同様のようで、実装する場合は「implements」します。interfaceを拡張する場合は、「extends」を使います。 ●04.Interface.php <?php interface aInterface { public function test(); } interface anotherInterface extends aInterface { public function test2(); } class ImplementedClass implements anotherInterface { /** * 実装しないと、「Fatal error: Class imple
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。 Oracle8 から追加されたBLOB型の扱いについてまとめています。BLOB型を使えば、データベースに直接バイナリファイルを格納しておくことが可能です。なお、BLOBの詳細については、適宜Oracleのマニュアルを読んでください(^-^; まず、INSERTの簡単にサンプルのフローを説明すると、以下のような感じです。 LOBロケータを定義する 空のBLOBをINSERTして、BLOB型のカラムを返す LOBロケータのsaveメソッドでファイルを格納する 注意点としては、以下の通りです。私は、2番目でハマりました(-"-; B
この作品は、Creative Commons Attribution License の下でライセンスされています。このライセンスの内容を確認するには、http://creativecommons.org/licenses/by/2.0/ を訪問するか、あるいは Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA に手紙を送ってください。
次期メジャーバージョンであるPHP6をあれこれやってみます。今回は、goto文のサポートです。 過去の一時期、「スパゲティコードになるからgoto文は悪だ!」みたいな風潮があり、個人的にはそれ以来全然使っていません。前に使ったのは、N88-BASICだったでしょうかねぇ。。。 それは置いとくとして、PHP6からgoto文がサポートされます。実際に使わなければならない場面が思いつかないのがナニですが、一応まとめてみました。 使用した環境 今回の環境は、CentOS4.5+Apache2.2.4+PHP6.0.0-devです。ソースは本家CVSリポジトリから直接取得しています。手順は『Do You PHP? - anonymous cvsからPHPのソースを取得する』を参照してください。また、PHPは以下のようなconfigureオプションを付けてbuildしています。 ●PHP6.0.0-d
スクリプト言語であるPHPとOracleの連携の他、XML、オブジェクト指向、デザインパターン、周辺ツールについて、色々と試したり調べたりしたことを備忘録的にまとめて公開
以下の原因が考えられます。 TNSの設定ミス /(ルート)ディレクトリから$ORACLE_HOME/network/admin/tnsnames.oraまでのディレクトリ・ファイルパーミッションの設定 以下の項目をチェックしてみてください。 tnsping [接続文字列]で、Response が帰ってくるか? SQL*Plusで接続できるか? tnsnames.ora が読込めるかどうか? /(ルート)ディレクトリから$ORACLE_HOME/network/admin/tnsnames.oraまでのディレクトリ・ファイルパーミッションすべてで、otherグループにread権限を与えているか? ※前者3つのチェック項目は、httpd.confに書かれたUser/Group(デフォルトは、nobody/nobody)でApacheを起動したときの環境変数を設定して行ってください。$ORACL
次期メジャーバージョンであるPHP6をあれこれやってみます。今回は、名前空間のサポートです。 PHP5での導入も検討された名前空間のサポートですが、PHP6でついに導入される事になりそうです。本家のメーリングリストでは以前から名前空間の仕様決めで盛んに議論されていましたが、Dmitry Stogov氏の提案を軸としたシンプルなものに固まっていったようです。そして2007/07/12、Dmitry Stogov氏によってついに名前空間をサポートするコード一式が本家CVSにcommitされました。2007/07/16現在ではCVSはもちろん、snaps.php.netにあるアーカイブにもそれらのコードが含まれています。 前置きが長くなりましたが、サポートされた名前空間がどんな感じなのか、実際にCVSからソースを取得してbuildしたPHP6-devを使って試した結果をまとめてみました。なお、今
YAML(YAML Ain't Markup Language)は、XMLのような「構造化されたデータ」を表現するためのフォーマットです。XMLは要素(タグ)を使って構造を表しますが、YAMLの場合、主にインデントを使って構造を表します。 YAML Ain't Markup Language XMLは要素(タグ)を使って構造を表しますが、YAMLの場合、主にインデントを使って構造を表します。YAMLの日本語での解説は、Rubyist MagazineのYAML入門シリーズが詳しいです。 Rubyist Magazine - プログラマーのための YAML 入門 (初級編) Rubyist Magazine - プログラマーのための YAML 入門 (中級編) Rubyist Magazine - プログラマーのための YAML 入門 (実践編) PHPでは、フレームワークであるSymfon
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。 セッションIDの出力には、XSS対策のためstrip_tags関数を通したものを出力することが推奨されています。ただし、HTMLタグの内側にその値が含まれる場合、htmlspecialchars関数を使用する必要があります。 これもよくあるネタですよね。今回はPHP4のSession管理機能を使ってカートを保持させています。カートのソース自体は、マニュアルに載っているものを参考にしました。ショッピングカートの基本的な流れはこんな感じと思います。後は、購入処理や購入後のカートを消す等の処理を付ければ、簡単ですが完成ですね(たぶ
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。 Oracle関数(Ora_XXXX関数)は推奨されない関数となっています。PDO関数が使えない・使わない場合は、OCI8関数(現在のOracle関数)を使いましょう。 メンテナンス画面などで検索結果をCSV形式でダウンロードさせる、という用件は意外とあるかと思います。ここでは、以下の2つのサンプルを作ってみました。 サーバ側でCSVファイルを作成し、ダウンロードさせる Header関数でContent-typeを出力し、整形したデータをそのまま返す まず、サーバ側で一度ファイルを作成して、そのファイルをダウンロードさせるタイ
Oracle関数(Ora_XXXX関数)は推奨されない関数となっています。PDO関数が使えない・使わない場合は、OCI8関数(現在のOracle関数)を使いましょう。 PHPからストアドプロシージャ・ファンクションを呼び出す方法は、SQL*Plusで無名プロシージャを実行するときの要領でそのまま実行すればOKです。例として、以下のようなテーブル、プロシージャを考えてみます。 ●テスト用テーブル定義 CREATE TABLE test( col1 VARCHAR2(20), col2 VARCHAR2(20) ); ●プロシージャ定義 CREATE OR REPLACE PROCEDURE p_test IS BEGIN INSERT INTO test VALUES ('test1','test2'); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBAC
目次序文I. はじめに1章Smarty とは?2章インストール必要条件基本的なインストール拡張セットアップII. テンプレートデザイナのための Smarty3章基本構文コメント変数関数属性ダブルクォート内に埋め込まれた変数演算子Smarty の構文解析を回避する4章変数PHP から割り当てられた変数設定ファイルから読み込まれた変数予約変数 {$smarty}5章変数の修飾子capitalizecatcount_characterscount_paragraphscount_sentencescount_wordsdate_formatdefaultescapeindentlowernl2brregex_replacereplacespacifystring_formatstripstrip_tagstruncateupperwordwrap6章修飾子の連結7章組み込み関数{capture}
次のページ
このページを最初にブックマークしてみませんか?
『Do You PHP? - 新着情報』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く