<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>オブジェクト指向PHP</title>
	<atom:link href="http://www.objectphp.jp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.objectphp.jp</link>
	<description>PHP5入門</description>
	<lastBuildDate>Tue, 24 Apr 2012 09:45:15 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>get_class_vars, get_object_vars</title>
		<link>http://www.objectphp.jp/2012/01/31/get_class_vars-get_object_vars/</link>
		<comments>http://www.objectphp.jp/2012/01/31/get_class_vars-get_object_vars/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 01:30:52 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=91</guid>
		<description><![CDATA[get_class_vars は、(引数で指定する)クラスで定義される変数を配列で返します。 get_object_vars は、(引数で指定する)オブジェクトで定義される変数を配列で返します。 どちらも、呼び出すスコープでアクセス可能な変数のみを抽出して返します。 class Item { private $sales = 900; public $price = 1200; } get_class_vars('Item'); のような場合、$price のみを抽出して返します。]]></description>
			<content:encoded><![CDATA[<p>get_class_vars は、(引数で指定する)クラスで定義される変数を配列で返します。</p>
<p>get_object_vars は、(引数で指定する)オブジェクトで定義される変数を配列で返します。</p>
<p>どちらも、呼び出すスコープでアクセス可能な変数のみを抽出して返します。</p>
<p><code>class Item {<br />
  private $sales = 900;<br />
  public $price = 1200;<br />
}<br />
get_class_vars('Item');</code></p>
<p>のような場合、$price のみを抽出して返します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2012/01/31/get_class_vars-get_object_vars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DateTime クラス</title>
		<link>http://www.objectphp.jp/2012/01/12/datetime/</link>
		<comments>http://www.objectphp.jp/2012/01/12/datetime/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 00:44:50 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=88</guid>
		<description><![CDATA[日付や時刻の処理に便利なクラスDateTime。PHP5.2以降で使用可能。DateInterval等、PHP5.3以降で利用可能な機能もある。 $date = new DateTime(); $date->add(時間); といった処理が楽にできる。上記はオブジェクト形式の場合。手続き型で記述する場合は、date_createを使用する。 従来の date 関数は、日付フォーマット文字列でデータを持っていた。表示するだけなら楽だが、日付の加減算や差分計算等は面倒だった。 PHP技術者上級試験の追加部分の出題範囲である。]]></description>
			<content:encoded><![CDATA[<p>日付や時刻の処理に便利なクラスDateTime。PHP5.2以降で使用可能。DateInterval等、PHP5.3以降で利用可能な機能もある。</p>
<p>$date = new DateTime();<br />
$date->add(時間);</p>
<p>といった処理が楽にできる。上記はオブジェクト形式の場合。手続き型で記述する場合は、date_createを使用する。</p>
<p>従来の date 関数は、日付フォーマット文字列でデータを持っていた。表示するだけなら楽だが、日付の加減算や差分計算等は面倒だった。</p>
<p><a href="http://php-web.net/phpexam/addition.html">PHP技術者上級試験の追加部分</a>の出題範囲である。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2012/01/12/datetime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smarty</title>
		<link>http://www.objectphp.jp/2011/11/06/smarty/</link>
		<comments>http://www.objectphp.jp/2011/11/06/smarty/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 06:37:47 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[テンプレート]]></category>
		<category><![CDATA[アジャイル]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=86</guid>
		<description><![CDATA[Smarty は、デザインテンプレート。プログラムから、ビュー部分を分離し独立して処理しやすくしたもの、と考えると良いだろう。 システムロジックと、デザインテンプレートとが独立平行して作成できれば、分業しやすい等開発効率でメリットがある。またウォーターフォールだけでなく、アジャイル開発も行いやすくなる(この辺は程度問題だが)。 Smarty を使うデメリットとしては、実行速度が遅くなる、という点があげられる。この点はキャッシュ機能等を上手く利用して回避したい。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smarty.net/">Smarty</a> は、デザインテンプレート。プログラムから、ビュー部分を分離し独立して処理しやすくしたもの、と考えると良いだろう。</p>
<p>システムロジックと、デザインテンプレートとが独立平行して作成できれば、分業しやすい等開発効率でメリットがある。またウォーターフォールだけでなく、アジャイル開発も行いやすくなる(この辺は程度問題だが)。</p>
<p>Smarty を使うデメリットとしては、実行速度が遅くなる、という点があげられる。この点はキャッシュ機能等を上手く利用して回避したい。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/11/06/smarty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>イテレータ</title>
		<link>http://www.objectphp.jp/2011/10/29/iterator/</link>
		<comments>http://www.objectphp.jp/2011/10/29/iterator/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 09:47:23 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[デザインパターン]]></category>
		<category><![CDATA[オブジェクト]]></category>
		<category><![CDATA[呼び出し]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=84</guid>
		<description><![CDATA[デザインパターンの一つ。反復作業を行う時に重宝する。 SPL(標準PHPライブラリ)の Iterator にフィルタイテレータを適用する例。 class FileIterator extends FilterIterator { public function __construct($iterator) { parent::__construct($iterator); } public function accept() { $file = $this->current(); $filepath = pathinfo($file); if ( strtolower($filepath['extension']) === 'jpg' ) { // 拡張子のチェック $imginfo = getimagesize($file->getPathname()); if ( $imginfo[2] == IMAGETYPE_JPEG ) { // 画像タイプのチェック return true; } else { return false; } } [...]]]></description>
			<content:encoded><![CDATA[<p>デザインパターンの一つ。反復作業を行う時に重宝する。<span id="more-84"></span></p>
<p>SPL(標準PHPライブラリ)の <a href="http://php-web.net/phpexam/iterator.html">Iterator</a> にフィルタイテレータを適用する例。</p>
<pre><code>class FileIterator extends FilterIterator {
    public function __construct($iterator) {
        parent::__construct($iterator);
    }

    public function accept() {
        $file = $this->current();
        $filepath = pathinfo($file);
        if ( strtolower($filepath['extension']) === 'jpg' ) { // 拡張子のチェック
            $imginfo = getimagesize($file->getPathname());
            if ( $imginfo[2] == IMAGETYPE_JPEG ) { // 画像タイプのチェック
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}</code></pre>
<p>上記例では、ファイル拡張子を取得し、jpg であれば、さらにファイルタイプをチェックする(徳丸浩著<a href="http://www.amazon.co.jp/gp/product/4797361190/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;tag=linuxonnotebo-22&#038;linkCode=as2&#038;camp=247&#038;creative=1211&#038;creativeASIN=4797361190">体系的に学ぶ 安全なWebアプリケーションの作り方　脆弱性が生まれる原理と対策の実践</a><img src="http://www.assoc-amazon.jp/e/ir?t=linuxonnotebo-22&#038;l=as2&#038;o=9&#038;a=4797361190" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> 4-12 を参考に作成)。</p>
<p>イテレータの側(オブジェクト側)に情報を持つことで、呼び出し側は詳細な実装を気にせずに処理を行うことができる。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/10/29/iterator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bindParam と bindValue</title>
		<link>http://www.objectphp.jp/2011/10/15/bindparam-bindvalue/</link>
		<comments>http://www.objectphp.jp/2011/10/15/bindparam-bindvalue/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 09:00:32 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[データベース]]></category>
		<category><![CDATA[PDO]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=83</guid>
		<description><![CDATA[PDO でプレースホルダーを利用するとき、bindParam や bindValue を使うことがある。これらは、変数をホルダー部分に当てはめる点では同じだが、当てはめを行うタイミングが異なる。 bindValue は、このメソッドを呼び出したとき。bindParam は、execute メソッドで実際にクエリを実行するとき。 $price = 2; $q->bindValue(&#8220;:minprice&#8221;,$price); $price = 5; $q->execute(); であれば、bindValue を呼び出した時点での $price の値 =2。 $price = 2; $q->bindParam(&#8220;:minprice&#8221;,$price); $price = 5; $q->execute(); であれば、execute 実行時点での $price の値 =5。]]></description>
			<content:encoded><![CDATA[<p>PDO でプレースホルダーを利用するとき、bindParam や bindValue を使うことがある。これらは、変数をホルダー部分に当てはめる点では同じだが、当てはめを行うタイミングが異なる。<span id="more-83"></span></p>
<p>bindValue は、このメソッドを呼び出したとき。bindParam は、execute メソッドで実際にクエリを実行するとき。</p>
<p>$price = 2;<br />
$q->bindValue(&#8220;:minprice&#8221;,$price);<br />
$price = 5;<br />
$q->execute();<br />
であれば、bindValue を呼び出した時点での <code>$price</code> の値 =2。</p>
<p>$price = 2;<br />
$q->bindParam(&#8220;:minprice&#8221;,$price);<br />
$price = 5;<br />
$q->execute();<br />
であれば、execute 実行時点での <code>$price</code> の値 =5。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/10/15/bindparam-bindvalue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cannot modify header information &#8211; headers already sent</title>
		<link>http://www.objectphp.jp/2011/10/06/header-sent/</link>
		<comments>http://www.objectphp.jp/2011/10/06/header-sent/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 06:56:20 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[エラーメッセージ]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[http]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=79</guid>
		<description><![CDATA[すでに何らかのHTML出力が行われている場合に、さらにヘッダー情報を出力しようとしたときに、この warning メッセージが表示される。 http レスポンスヘッダーを出力する header 関数、クッキーを使用・設定する setcookie 関数などを使用する場合、header や setcookie よりも前に HTML 出力を行っていないか、チェックする必要がある。 &#60;head&#62; のような記述だけでなく、PHP ソースに余分な空白や空行がある場合も、headers already sent というメッセージが出力されるので注意する。 このエラーが出た場合は、エラーの起きた行よりも前に、HTML 出力をしている箇所があるはず。]]></description>
			<content:encoded><![CDATA[<p>すでに何らかのHTML出力が行われている場合に、さらにヘッダー情報を出力しようとしたときに、この warning メッセージが表示される。<span id="more-79"></span></p>
<p>http レスポンスヘッダーを出力する header 関数、クッキーを使用・設定する setcookie 関数などを使用する場合、header や setcookie よりも前に HTML 出力を行っていないか、チェックする必要がある。</p>
<p>&lt;head&gt; のような記述だけでなく、PHP ソースに余分な空白や空行がある場合も、headers already sent というメッセージが出力されるので注意する。</p>
<p>このエラーが出た場合は、エラーの起きた行よりも前に、HTML 出力をしている箇所があるはず。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/10/06/header-sent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>__sleepと__wakeup</title>
		<link>http://www.objectphp.jp/2011/08/30/sleep-wakeup/</link>
		<comments>http://www.objectphp.jp/2011/08/30/sleep-wakeup/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 22:42:09 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[オブジェクト]]></category>
		<category><![CDATA[マジックメソッド]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=77</guid>
		<description><![CDATA[__sleepと__wakeupは、マジックメソッド（特殊なメソッド）。 __sleepが定義されているオブジェクトを、serialize関数でシリアル化すると、シリアル化の直前に__sleepが呼び出される。（実行例としては、データベース接続を切断する、保存されていないデータを保存する等） __wakeupが定義されているオブジェクトを、unserialize関数で非シリアル化すると、非シリアル化の直後に__wakeupが呼び出される。（実行例としては、データベースと接続する、初期化する等） (*) シリアル化とは、オブジェクトをデータベースやファイルに出力できる形式に変換する作業のこと。]]></description>
			<content:encoded><![CDATA[<p>__sleepと__wakeupは、マジックメソッド（特殊なメソッド）。</p>
<p>__sleepが定義されているオブジェクトを、serialize関数でシリアル化すると、シリアル化の直前に__sleepが呼び出される。（実行例としては、データベース接続を切断する、保存されていないデータを保存する等）</p>
<p>__wakeupが定義されているオブジェクトを、unserialize関数で非シリアル化すると、非シリアル化の直後に__wakeupが呼び出される。（実行例としては、データベースと接続する、初期化する等）</p>
<p>(*) シリアル化とは、オブジェクトをデータベースやファイルに出力できる形式に変換する作業のこと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/08/30/sleep-wakeup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP技術者認定試験</title>
		<link>http://www.objectphp.jp/2011/06/29/phpexam/</link>
		<comments>http://www.objectphp.jp/2011/06/29/phpexam/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 00:16:32 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[オブジェクト]]></category>
		<category><![CDATA[資格]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=75</guid>
		<description><![CDATA[PHP技術者認定機構によるPHP技術者資格です。 初級試験、上級試験、ウィザードの3段階です。 初級試験、上級試験は客観テストです。プロメトリック社の指定会場で受験します。 認定スクールの場合は、各スクールにお問い合わせください。 ウィザードは上級試験合格者のみ受験できます。論述形式で、公開審査(上級試験合格者が評価する)らしいです。 上級では、プログラミングPHP第六章オブジェクトから約12％出題されるらしいです。]]></description>
			<content:encoded><![CDATA[<p>PHP技術者認定機構によるPHP技術者資格です。<span id="more-75"></span></p>
<p>初級試験、上級試験、ウィザードの3段階です。</p>
<p>初級試験、上級試験は客観テストです。プロメトリック社の指定会場で受験します。 認定スクールの場合は、各スクールにお問い合わせください。</p>
<p>ウィザードは上級試験合格者のみ受験できます。論述形式で、公開審査(上級試験合格者が評価する)らしいです。</p>
<p>上級では、<a href="http://php-web.net/phpexam/object.html">プログラミングPHP第六章オブジェクト</a>から約12％出題されるらしいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/06/29/phpexam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDO</title>
		<link>http://www.objectphp.jp/2011/06/11/pdo/</link>
		<comments>http://www.objectphp.jp/2011/06/11/pdo/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 01:44:45 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[データベース]]></category>
		<category><![CDATA[セキュリティ]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=74</guid>
		<description><![CDATA[php5.1以降で標準利用可能なエクステンション。(念のためphp.iniは確認しておく) 最初に、new PDO($database, $user, $password)(databaseはmysql:dbname=hogehoge;host=localhostのような形式)でデータベースの種類を指定する必要があるが、それ以後のクエリ発行等は原則として特定のデータベースに依存しない形で記述できる。 プリペアードステートメントに対応。 $db->prepare(SQL文); $db->bindParam(プレースホルダ、変数の値); これを利用すれば、自動的にエスケープされるのでSQLインジェクション脆弱性を未然に防ぐことが可能。また類似したクエリが多数ある場合は、処理速度に大きく影響する。]]></description>
			<content:encoded><![CDATA[<p>php5.1以降で標準利用可能なエクステンション。(念のためphp.iniは確認しておく)</p>
<p>最初に、<code>new PDO($database, $user, $password)</code>(databaseは<code>mysql:dbname=hogehoge;host=localhost</code>のような形式)でデータベースの種類を指定する必要があるが、それ以後のクエリ発行等は原則として特定のデータベースに依存しない形で記述できる。</p>
<p>プリペアードステートメントに対応。<br />
$db->prepare(SQL文);<br />
$db->bindParam(プレースホルダ、変数の値);<br />
これを利用すれば、自動的にエスケープされるのでSQLインジェクション脆弱性を未然に防ぐことが可能。また類似したクエリが多数ある場合は、処理速度に大きく影響する。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/06/11/pdo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>フレームワーク</title>
		<link>http://www.objectphp.jp/2011/01/13/framework/</link>
		<comments>http://www.objectphp.jp/2011/01/13/framework/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 01:36:08 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/?p=72</guid>
		<description><![CDATA[ソフトウェアを作るための基礎部分のことです。一からシステム構築するのと比較すると、以下のようなメリットがあります。 良く利用する機能を予め用意しておき、車輪の再発明を防ぐ。 セキュリティ対策等を自動で行う。 MVC を利用し、ロジックとレイアウトを分離する。 コーディング規則を統一し、複数人での開発やメンテナンスを容易にする。 一方で、デメリットもあります。 フレームワークのコーディング規則や設計思想などの学習コスト 実行時の速度 フレームワーク自体のバージョンアップ時の対応 などがあげられます。]]></description>
			<content:encoded><![CDATA[<p>ソフトウェアを作るための基礎部分のことです。一からシステム構築するのと比較すると、以下のようなメリットがあります。</p>
<ul>
<li>良く利用する機能を予め用意しておき、車輪の再発明を防ぐ。</li>
<li>セキュリティ対策等を自動で行う。</li>
<li>MVC を利用し、ロジックとレイアウトを分離する。</li>
<li>コーディング規則を統一し、複数人での開発やメンテナンスを容易にする。</li>
</ul>
<p>一方で、デメリットもあります。</p>
<ul>
<li>フレームワークのコーディング規則や設計思想などの学習コスト</li>
<li>実行時の速度</li>
<li>フレームワーク自体のバージョンアップ時の対応</li>
</ul>
<p>などがあげられます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2011/01/13/framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

