<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ueblog &#187; PHP</title>
	<atom:link href="http://ueblog.natural-wave.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://ueblog.natural-wave.com</link>
	<description>Web関連のネタを中心に役立つ情報を配信しています。</description>
	<lastBuildDate>Wed, 11 Jan 2012 00:51:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/tag/php/feed/" />
		<item>
		<title>PHPの軽量フレームワーク「Codeigniter」導入</title>
		<link>http://ueblog.natural-wave.com/2011/02/13/introduction-codeigniter/</link>
		<comments>http://ueblog.natural-wave.com/2011/02/13/introduction-codeigniter/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 15:04:10 +0000</pubDate>
		<dc:creator>ueblog</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programing]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://ueblog.natural-wave.com/?p=760</guid>
		<description><![CDATA[久々の更新。 Codeigniterという、PHP製のフレームワークがとてもいい感じだったのでご紹介。 軽量、そして学習コストの低さ 日本のCodeigniterユーザ会のページにもありますが、導入がとても簡単、シンプルな構成と規約で覚えておくことがかなり少]]></description>
			<content:encoded><![CDATA[<p><a href="http://codeigniter.com/"><img src="http://ueblog.natural-wave.com/wp-content/uploads/2011/02/picture-2.png" title="picture-2" width="222" height="77" class="size-full wp-image-762 alignright" /></a>久々の更新。</p>
<p><a href="http://codeigniter.com/" target="_blank">Codeigniter</a>という、PHP製のフレームワークがとてもいい感じだったのでご紹介。</p>
<h3>軽量、そして学習コストの低さ</h3>
<p><a href="http://codeigniter.jp/" target="_blank">日本のCodeigniterユーザ会のページ</a>にもありますが、導入がとても簡単、シンプルな構成と規約で覚えておくことがかなり少なく、最近のRuby on Rails似のフレームワークのようなフルスタックな機能は切り捨てている分、動作がかなり高速というのが特徴のようです。またPHP4でも動作します。（つい先日リリースされた、Codeigniter2よりPHP5以上を必要とする。）</p>
<h3>インストール</h3>
<p>インストールは本当にとても簡単。</p>
<p><a href="http://codeigniter.com/downloads/" target="_blank">http://codeigniter.com/downloads/</a></p>
<p>上記のダウンロードサイトより、ダウンロードしZIPファイルを解凍、公開ディレクトリ（DocumentRoot）以下に配置するだけです。下記のような構成になります。</p>
<blockquote><p>www/index.php        ←    すべてこのindex.php経由で呼ばれる<br />
www/application/    ←　Controller,View,Modelなど開発者が触るところ<br />
www/system/　　　←　フレームワーク本体（触らない）</p></blockquote>
<p>PEARなどで必要とするライブラリもなく、このアーカイブ内だけで動作できるので、制限の多いレンタルサーバにも導入しやすいと思います。</p>
<h3>Getting Started!</h3>
<p>早速、コーディングしたいところですが、簡単とはいえ、いくつかのルールは覚えておく必要があります。</p>
<p><a href="http://codeigniter.com/user_guide/" target="_blank">Codeigniter User Guide</a></p>
<p><a href="http://codeigniter.jp/user_guide_ja/" target="_blank">CodeIgniter ユーザガイド 日本語版</a></p>
<p>上記のユーザガイドのチュートリアルを簡単に眺めるだけですぐに理解できると思います。日本語の方は現在のところ、Codeigniter1.7のガイド（現在翻訳中のようです）のため、記述が違いがありますが、（例えば、Controller→CI_Controllerをextendするとか）大きな流れは変わりません。</p>
<h3>機能</h3>
<p>DBとの連携、セッション管理、暗号化、メール、フォームValidateなどなど、最低限の機能は揃っています。またヘルパー等による拡張も可能です。</p>
<h3>情報源</h3>
<p>フレームワーク選びで重要なことが、「マニュアルが豊富」「どれだけのユーザが利用してるか」が挙げられると思いますが、マニュアルに関しては上記であげた公式サイトのユーザガイドが分かりやすく問題ないと思います。また利用してるユーザ数は、単純なGoogleのインデックス数でみると、、</p>
<p><a href="http://www.google.co.jp/search?aq=f&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=symfony&amp;qscrl=1" target="_blank">Symfony</a> →  約 5,290,000 件</p>
<p><a href="http://www.google.co.jp/search?hl=ja&amp;safe=off&amp;qscrl=1&amp;q=cakephp&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=" target="_blank">CakePHP</a> →　約 3,790,000 件</p>
<p><a href="http://www.google.co.jp/search?hl=ja&amp;safe=off&amp;qscrl=1&amp;q=Codeigniter&amp;btnG=%E6%A4%9C%E7%B4%A2&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=" target="_blank">Codeigniter</a> →　約 2,220,000 件</p>
<p>CakePHPやSymfonyといったフレームワークには少ないですが、Codeigniterについて書かれたブログも結構増えてきているように見えます。まあ、困ったときは本体のソースもそんなに大きくないのでソースを読むのも、そんなに苦ではないでしょう。</p>
<p>日本語のフォーラムもこの2011年2月下旬より公開されるようです。</p>
<h3>最後に</h3>
<p>PHPを使って簡単に実装したい、既存のPHPソースを新たに書き直したい、プロジェクトが新しいメンバーで構成されていて経験が異なる等、様々な場面で活躍できるフレームワークです。</p>
<p>私自身もPHPで実装するときはSymfonyを選んでましたが、プロジェクトの規模や一緒に開発するメンバーの経験などを考慮して、このCodeigniterも選択肢としてかなり良いと思いました。</p>
<p>※追記</p>
<p>2011/2/19に<a href="http://cicon.codeigniter.jp/2011/" target="_blank">日本初となるCodeigniterカンファレンス</a>が行われるようです。</p>
<p>行きたいなー。</p>
]]></content:encoded>
			<wfw:commentRss>http://ueblog.natural-wave.com/2011/02/13/introduction-codeigniter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/2011/02/13/introduction-codeigniter/" />
	</item>
		<item>
		<title>Zend_Service_AmazonのAmazon新API対応について</title>
		<link>http://ueblog.natural-wave.com/2009/08/08/zend_service_amazon-new-api/</link>
		<comments>http://ueblog.natural-wave.com/2009/08/08/zend_service_amazon-new-api/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 06:47:43 +0000</pubDate>
		<dc:creator>ueblog</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programing]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[API]]></category>

		<guid isPermaLink="false">http://ueblog.natural-wave.com/?p=504</guid>
		<description><![CDATA[Amazon APIを利用している方、新しい認証方法に対応してますか～？ 2009年8月16日からAmazon APIの認証方法が変更されるにあたって、利用している方は対応が必要です。 かなりざっくり説明すると、 URLにtimestampを付与 URLパラメータをアルファベット順にソート パラ]]></description>
			<content:encoded><![CDATA[<p><strong>Amazon API</strong>を利用している方、新しい認証方法に対応してますか～？</p>
<p>2009年8月16日からAmazon APIの認証方法が変更されるにあたって、利用している方は対応が必要です。</p>
<p>かなりざっくり説明すると、</p>
<ul>
<li>URLにtimestampを付与</li>
<li>URLパラメータをアルファベット順にソート</li>
<li>パラメータにAmazonから新しく付与されているキーを元にハッシュ化しURLエンコード</li>
<li>ハッシュ化されたキーをURLにくっつけて、APIにアクセス！</li>
</ul>
<p>と言った具合。詳しくは</p>
<p><a href="http://chalow.net/2009-05-09-1.html" target="_blank">[を] アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい</a></p>
<p>こちらを参照。</p>
<p>さて本題、<strong>Zend_Service_Amazon</strong>を利用している場合はどうすればよいか。</p>
<p>実はとても簡単。Zend_Service_APIオブジェクトをnewするときの第3引数にAmazonから付与される、Secret Access Keyを指定するだけ！</p>
<p>まずは、<a href="http://aws.amazon.com/" target="_blank">Amazon Web Services</a>でログインしてから、上部メニューの「Your Account」⇒「Access Identifiers」へ行き、<strong>Your Secret Access Key:</strong>と書かれている部分をコピーしておく。</p>
<p>このSecret Access Keyをnew Zend_Service_APIしているソースの第3引数に指定しよう。</p>
<div class="igBar"><span id="lphp-3"><a href="#" onclick="javascript:showPlainTxt('php-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-3">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$amazon</span> = <span style="color:#000000; font-weight:bold;">new</span> Zend_Service_Amazon<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Access Key'</span>, <span style="color:#FF0000;">'JP'</span>, <span style="color:#FF0000;">'Secret Access Key'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$result</span> = <span style="color:#0000FF;">$amazon</span>-&gt;<span style="color:#006600;">ItemLookup</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$item_code</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF0000;">'AssociateTag'</span>&nbsp; =&gt; <span style="color:#FF0000;">'associate_tag'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF0000;">'ResponseGroup'</span> =&gt; <span style="color:#FF0000;">'Large'</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
以上終了！Zend使っててよかった～</p>
<p>ちなみに2009年7月26日に更新されたようなので、zendのアップグレードをしていない方は、ソースを落とすなり、「<strong>pear upgrade zend/zend」</strong>しておきましょう。</p>
<p>ちなみにZend_Service_Amazonコンストラクターのphpdocはこんな感じ。</p>
<div class="igBar"><span id="lphp-4"><a href="#" onclick="javascript:showPlainTxt('php-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-4">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/**</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * Constructs a new Amazon Web Services Client</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> *</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * @param&nbsp; string $appId&nbsp; &nbsp; &nbsp; &nbsp;Developer's Amazon appid</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * @param&nbsp; string $countryCode Country code for Amazon service; may be US, UK, DE, JP, FR, CA</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * @throws Zend_Service_Exception</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * @return Zend_Service_Amazon</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;public <span style="color:#000000; font-weight:bold;">function</span> __construct<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$appId</span>, <span style="color:#0000FF;">$countryCode</span> = <span style="color:#FF0000;">'US'</span>, <span style="color:#0000FF;">$secretKey</span> = <span style="color:#000000; font-weight:bold;">null</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
あれ第3引数のdocumentが書かれてない。。でもちゃんと実装はされていて動作もしたので念のため。</p>
]]></content:encoded>
			<wfw:commentRss>http://ueblog.natural-wave.com/2009/08/08/zend_service_amazon-new-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/2009/08/08/zend_service_amazon-new-api/" />
	</item>
		<item>
		<title>さくらインターネットでpearが動かないとき</title>
		<link>http://ueblog.natural-wave.com/2009/08/08/dont-run-pear-on-sakurainternet/</link>
		<comments>http://ueblog.natural-wave.com/2009/08/08/dont-run-pear-on-sakurainternet/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 05:41:01 +0000</pubDate>
		<dc:creator>ueblog</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programing]]></category>
		<category><![CDATA[さくら]]></category>

		<guid isPermaLink="false">http://ueblog.natural-wave.com/?p=500</guid>
		<description><![CDATA[久しぶりにさくらインターネットのレンタルサーバで、pearコマンドを打ったところ動かなかった。 $ pear upgrade exec: /usr/local/php-5.2.5/bin/php: not found 自前でpearをインストールした人は、pearコマンドの改修が必要なようだ。 pearコマンド自体はシェルなので直接書き換えることにした。 $ which pear /home/[home]/local/bin/pear $ vi ~/local/bin/pear 7行目]]></description>
			<content:encoded><![CDATA[<p>久しぶりにさくらインターネットのレンタルサーバで、pearコマンドを打ったところ動かなかった。</p>
<blockquote><p>$ pear upgrade<br />
exec: /usr/local/php-5.2.5/bin/php: not found</p></blockquote>
<p>自前でpearをインストールした人は、pearコマンドの改修が必要なようだ。</p>
<p>pearコマンド自体はシェルなので直接書き換えることにした。</p>
<blockquote><p>$ which pear<br />
/home/[home]/local/bin/pear<br />
$ vi ~/local/bin/pear</p></blockquote>
<p>7行目あたり</p>
<div class="igBar"><span id="lcode-6"><a href="#" onclick="javascript:showPlainTxt('code-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-6">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">#&nbsp; if test <span style="color:#CC0000;">"/usr/local/php-5.2.5/bin/php"</span> = <span style="color:#CC0000;">'@'</span>php_bin<span style="color:#CC0000;">'@'</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; if test <span style="color:#CC0000;">"/usr/local/php/5.2.10/bin/php"</span> = <span style="color:#CC0000;">'@'</span>php_bin<span style="color:#CC0000;">'@'</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; PHP=php</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; else</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">#&nbsp; &nbsp; PHP=<span style="color:#CC0000;">"/usr/local/php-5.2.5/bin/php"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; PHP=<span style="color:#CC0000;">"/usr/local/php/5.2.10/bin/php"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; fi</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">fi </div>
</li>
</ol>
</div>
</div>
</div>
<p>
するとpearコマンドは無事動きましたとさ。</p>
<blockquote><p>$ pear upgrade zend/zend<br />
WARNING: channel "zend.googlecode.com/svn" has updated its protocols, use "channel-update zend.googlecode.com/svn" to update<br />
downloading Zend-1.9.0.tgz ...<br />
Starting to download Zend-1.9.0.tgz (3,249,096 bytes)<br />
..........done: 3,249,096 bytes<br />
upgrade ok: channel://zend.googlecode.com/svn/Zend-1.9.0</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ueblog.natural-wave.com/2009/08/08/dont-run-pear-on-sakurainternet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/2009/08/08/dont-run-pear-on-sakurainternet/" />
	</item>
		<item>
		<title>Net_UserAgent_Mobile :: 1.0.0RC2公開</title>
		<link>http://ueblog.natural-wave.com/2009/05/16/net_useragent_mobile/</link>
		<comments>http://ueblog.natural-wave.com/2009/05/16/net_useragent_mobile/#comments</comments>
		<pubDate>Sat, 16 May 2009 12:12:26 +0000</pubDate>
		<dc:creator>ueblog</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://ueblog.natural-wave.com/?p=401</guid>
		<description><![CDATA[PHPで携帯サイト開発者には、お馴染みのPEARモジュール「Net_UserAgent_Mobile」がRC2となってアップグレードされたようです。 Net_UserAgent_Mobile :: 1.0.0RC2 アップグレード方法はPEARコマンドで。 # pear upgrade Net_UserAgent_Mobile 今回アップグレードされた内容は、 docomoの新機種マッピング対応 「Strict standards errors」のwarningに対応など、バグFIX ライセ]]></description>
			<content:encoded><![CDATA[<p>PHPで携帯サイト開発者には、お馴染みのPEARモジュール「Net_UserAgent_Mobile」がRC2となってアップグレードされたようです。</p>
<p><a href="http://pear.php.net/package/Net_UserAgent_Mobile/download/1.0.0RC2/" target="_blank">Net_UserAgent_Mobile :: 1.0.0RC2</a></p>
<p>アップグレード方法はPEARコマンドで。</p>
<blockquote><p># pear upgrade Net_UserAgent_Mobile</p></blockquote>
<p>今回アップグレードされた内容は、</p>
<ul>
<li>docomoの新機種マッピング対応</li>
<li> 「Strict standards errors」のwarningに対応など、バグFIX</li>
<li>ライセンスの変更。PHP License　⇒　New BSD License</li>
</ul>
<p>のようです。</p>
<p>ソースをよくよく見てみると、docomoのGPS対応端末可否を返したり、HTMLバージョンを返す部分は、機種のマッピング表をソースに持っていたとは・・・</p>
<p>そんなに頻繁にアップグレードされないモジュールなため、その辺りを使いたい人は自分でメンテナンスしないとだめでしょうね。</p>
]]></content:encoded>
			<wfw:commentRss>http://ueblog.natural-wave.com/2009/05/16/net_useragent_mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/2009/05/16/net_useragent_mobile/" />
	</item>
	</channel>
</rss>

