<?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>WIDGET-INFO &#187; その他クラス</title>
	<atom:link href="http://blog.widget-info.net/category/cakephp/others_class-cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.widget-info.net</link>
	<description>WIDGET-INFOではCakePHPやIPhone情報、その他開発に関する情報を発信</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:44:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CakePHP　Stringクラスのinsert()を使ってみる</title>
		<link>http://blog.widget-info.net/2009/11/cakephp_string_insert/</link>
		<comments>http://blog.widget-info.net/2009/11/cakephp_string_insert/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:06:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[その他クラス]]></category>
		<category><![CDATA[国際化]]></category>
		<category><![CDATA[言語]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=358</guid>
		<description><![CDATA[CakePHPのStringクラスにある「insert()」を試してみました。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのStringクラスにある「insert()」を試してみました。<br />
自分のメモでもありますが。。。</p>
<p>特に便利と感じた利用方法。。。</p>
<p>皆さんは「__(&#8216;CakePHP best&#8217;)」などような言語ファイルを使った国際化を自動で行ってくれる機能を、をすでに使っているかと思います。<br />
例えばこの「CakePHP best」の部分を動的に変えたいと思う場合もあるかと思います。</p>
<p>簡単にコーディングを行おうと思えば次のようなるかと思います。<br />
<span id="more-358"></span></p>
<pre class="brush:php">$value='best';
echo __('CakePHP ',true).$value;</pre>
<p>と言った形で「$value」の値を変更していくと言った形でしょうか。。。<br />
もちろん100%悪い形というわけではありませんが、もし「CakePHP 」を最終的に<br />
「CakePHP is」+「$value」+「PHP」に変更しなければならなくなった場合。。。</p>
<p>もちろん先ほどの状態では次のように変更しなければならなくなります。</p>
<pre class="brush:php">$value='best';
echo __('CakePHP ',true).$value.__('PHP',true);</pre>
<p>これでは修正がある度に手間がかかり、これがいくつものファイルに存在した場合を考えると。。。<br />
悪夢です（笑）</p>
<p>そこで活躍するのが今回のStringクラスの「insert()」。</p>
<p>先ほどの例を「insert()」に置き変えた場合の答えを先に記述すると次のようになります。</p>
<pre class="brush:php">echo String::insert(__('CakePHP :status PHP',true),array('status'=&gt;'best'));
//CakePHP best PHP</pre>
<p>さてお気づきでしょうか？</p>
<p>「:status」が「insert()」の第2引数である配列のキーの値を参照し、置き換えてくれます。<br />
こうすることで、言語ファイルには「CakePHP :status PHP」だけを記述し、自由に変更することができます。<br />
もちろん配列のキーは複数指定することもできるので、</p>
<pre class="brush:php">echo String::insert(__('CakePHP :status PHP by :foo',true),array('status'=&gt;'best','foo'=&gt;'me'));
//CakePHP best PHP by me</pre>
<p>も可能です。<br />
これで無駄に言語ファイルが肥大化することも抑えることかと思います。<br />
英文の文法についてはご了承ください（笑）</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/11/cakephp_string_insert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakePHP　テーブル情報の削除</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 23:21:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cache]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[その他クラス]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=318</guid>
		<description><![CDATA[CakePHPではデータベースのテーブル情報をキャッシュしてくれる機能があります。]]></description>
			<content:encoded><![CDATA[<p>CakePHPではデータベースのテーブル情報をキャッシュしてくれる機能があります。<br />
「app/config/core.php」内の設定で「Configure::write(&#8216;Cache.check&#8217;, true);」を<br />
適用していると生成されませんが、「app/tmp/cache/models」に<br />
データベースのテーブル情報がキャッシュとして保存されていきます。<br />
<span id="more-318"></span></p>
<p>これはテーブル情報をキャッシュすることで、フォームヘルパーなどでも利用される情報でもあり<br />
大変便利な機能ではあります。<br />
しかし気をつける点があり、「app/config/core.php」内の設定で「Configure::write(&#8216;debug&#8217;, 0);」の設定を<br />
1以上であれば、テーブルの情報を変更しても問題は無いのですが<br />
0を指定(デバック無し)にしてテーブル情報を変更すると、変更したテーブルのフィールド情報が取得されない現象が起こります。<br />
詳しい内容は割愛させていただきますが、まぁあたりまえな話でもあります。</p>
<p>しかし、ここで問題となるのが作成するアプリケーションの機能で、任意のタイミングにテーブル情報を変更するような<br />
動的テーブルが存在するアプリケーション設計に問題が発生するかと思います。<br />
その場合、キャッシュとして保存されたテーブル情報を一度削除をしなければ、変更された状態のテーブル情報を<br />
取得することができなくなり、「find()」などでも問題となってしまいます。</p>
<p>そこで削除する方法を探してみました。<br />
単純にCakePHPには定数の「CACHE」であるキャッシュディレクトリへのパスがあるので<br />
その定数を使って削除する方法がありますが、無駄なコーディングが増えるので<br />
CakePHPの内部を調べてテストしてみたところ発見！1行のコーディングで削除できます。</p>
<p>削除するためのコーディングはこちら</p>
<pre class="brush:php">Cache::delete('ファイル名','_cake_model_')</pre>
<p>ここで注意することは指定する「ファイル名」です。<br />
この名称の指定はキャッシュ機能が「File」エンジンを利用して、設定を変更していない場合は<br />
ファイル名のプレフィックスとして「cake_model_」が自動でつきます。<br />
「ファイル名」の指定は、例えばデータベースへの接続が「default」でテーブル名が「users」の場合は<br />
「ファイル名」を「default_users」となります。</p>
<p>これでテーブルが動的な設定でもCakePHPを問題なく利用できかと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　SetクラスのpushDiff()を使ってみる</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_set_pushdiff/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_set_pushdiff/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 20:02:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Set]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=255</guid>
		<description><![CDATA[CakePHPのSetクラスにある「pushDiff()」を使ってみました。自分のメモです。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのSetクラスにある「pushDiff()」を使ってみました。<br />
自分のメモです。。。</p>
<p>テストとして次の例で記述します。<br />
<span id="more-255"></span></p>
<pre class="brush:php">$array1=array('abc','efg');
$array2=array('abc','ffg','Efg');
$newArray=Set::pushDiff($array1,$array2);
pr($newArray);</pre>
<p>結果は</p>
<pre class="brush:php">Array
(
    [0] =&gt; abc
    [1] =&gt; efg
    [2] =&gt; Efg
)</pre>
<p>という結果でした。<br />
Setクラスの「merge()」との違いは「merge()」は配列を結合し、同一キーが存在する場合は<br />
上書きされますが、この場合は上書きをしないようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_set_pushdiff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　Setクラスのmerge()を使ってみる</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_set_merge/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_set_merge/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 23:10:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Set]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=258</guid>
		<description><![CDATA[CakePHPのSetクラスにある「merge()」を使ってみました。自分用のメモです。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのSetクラスにある「merge()」を使ってみました。<br />
自分用のメモです。。。</p>
<p>Setクラスの「merge()」はPHP関数である「array_merge()」を再帰的に行ってくれるものです。<br />
簡単に説明すると1つ目の配列に2つ目の配列を結合します。<br />
記述例では</p>
<pre class="brush:php">$array1 = array("color" =&gt; array("favorite" =&gt; "red"), 5);
$array2 = array(10, "color" =&gt; array("favorite" =&gt; "green", "blue"));
pr(Set::merge($array1,$array2));</pre>
<p><span id="more-258"></span>結果は</p>
<pre class="brush:php">Array
(
    [color] =&gt; Array
        (
            [favorite] =&gt; green
            [0] =&gt; blue
        )

    [0] =&gt; 5
    [1] =&gt; 10
)</pre>
<p>となります。<br />
PHP関数の「array_merge()」では再帰的に行ってくれない部分をサポートしてくれるので、<br />
「array_merge()」の代わりに利用することができます。<br />
ただし注意点としてはPHP関数の「array_merge_recursive()」とは違うので、使い分けが必要な場合もあるかと思います。</p>
<p>ちなみに前述の例の配列を「array_merge_recursive()」で行った場合の結果は次のようになります。</p>
<pre class="brush:php">Array
(
    [color] =&gt; Array
        (
            [favorite] =&gt; Array
                (
                    [0] =&gt; red
                    [1] =&gt; green
                )

            [0] =&gt; blue
        )

    [0] =&gt; 5
    [1] =&gt; 10
)</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_set_merge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　Stringクラスのtokenize()を使ってみる</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_string_tokenize/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_string_tokenize/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 23:11:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=251</guid>
		<description><![CDATA[CakePHPのStringクラスにある「tokenize()」を試してみました。自分のメモでもありますが。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのStringクラスにある「tokenize()」を試してみました。<br />
自分のメモでもありますが。。。</p>
<p>これは使ってみて便利と感じてしまいます（笑<br />
というのは簡単に説明すると、CSVデータの1行を配列化したい場合に便利です。<br />
この場合の記述として先に例を。。。<br />
<span id="more-251"></span></p>
<pre class="brush:php">String::tokenize('テキスト',',','"','"');</pre>
<p>となります。<br />
内容として第1引数には文字列を、第2引数には分割文字列を<br />
セットしていきます。<br />
冒頭にも言った便利と感じる部分が第3、4引数にあります。<br />
これは第2引数で指定した文字列で分割する際に、第3、4引数で指定した文字列の<br />
範囲内に第2引数が存在する場合は、分割しないようにしてくれます。</p>
<p>この関数はCSVデータを配列化するのみもってこいの関数ではあります。</p>
<p>1点注意なことは第1引数は配列ではなく文字列であるということなので、<br />
CSVデータを変換したい場合は「foreach」などでデータを回さなければなりません。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_string_tokenize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　Stringクラスのuuid()を使ってみる</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_string_uuid/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_string_uuid/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 23:24:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=249</guid>
		<description><![CDATA[CakePHPのライブラリであるStringクラスを使ってみました。その結果をメモとして。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのライブラリであるStringクラスを使ってみました。<br />
その結果をメモとして。。。</p>
<p>Stringクラスはコントローラーおよびモデルのどちらでも使えるクラスです。<br />
というのもモデルですでに読み込まれているようです。<br />
<span id="more-249"></span><br />
では基本的な使い方としては</p>
<pre class="brush:php">String::メソッド();</pre>
<p>です。<br />
まぁ小難しい書き方をしないですが（笑</p>
<p>その中の一つである「uuid()」ですが、名称通りにユニークなIDを返します。<br />
PHPの関数「uniqid」とは違うユニークなIDで「RFC4122」というフォーマットで<br />
ユニークなIDを返します。<br />
記述としては</p>
<pre class="brush:php">String::uuid();</pre>
<p>となります。<br />
返り値の例としては「550e8400-e29b-41d4-a716-446655440000」な感じで返されます。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_string_uuid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　Folderクラスの利用</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_folder_class/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_folder_class/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 16:24:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Folder]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=222</guid>
		<description><![CDATA[CakePHPにはFielクラスに続いてFolderクラスもあります。このクラスも便利な機能なので少し紹介していこうかと思います。]]></description>
			<content:encoded><![CDATA[<p>CakePHPにはFielクラスに続いてFolderクラスもあります。<br />
このクラスも便利な機能なので少し紹介していこうかと思います。</p>
<p>「Folder」クラスを利用するには、「File」クラス同様にクラスを変数に格納しなければ利用できません。<br />
コントローラーやモデルのように「$this-&gt;」みたいな使い方ではないのでご注意を（汗</p>
<p><span id="more-222"></span></p>
<p>利用するには</p>
<pre class="brush:php">$folderClass=new Folder('フォルダーへのパス');</pre>
<p>だけです。<br />
フォルダーへのパスをNULLで設定した場合はCakePHPの定数「TMP」が自動で設定されます。<br />
基本的にはどこかのフォルダーにアクセスするものなので、NULL値は無いと思われますが（汗</p>
<p>では指定したパスを読み込んでみるとすると例えば次のようになります。</p>
<pre class="brush:php">$folderClass-&gt;ls();</pre>
<p>このようにコーディングをすると返り値には指定したパス内にあるディレクトリおよび<br />
ファイルが配列で返されます。<br />
ここでCakePHPの便利なところが、フォルダーとファイルを別々に取得してくれることです（笑</p>
<p>「ls()」の返り値にある配列で、1つ目のキー（0）にはフォルダーを、2つ目のキー（1）にはファイル名が<br />
格納されて返ってきます。<br />
わざわざフォルダーなのかファイルなのかを仕分けせずにCakePHPが自動で行ってくれるので<br />
大変便利で楽ができてしまいます（笑</p>
<p>とりあえず今回は基本をここまで。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_folder_class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　Fileクラスのその他機能</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_file_class_other/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_file_class_other/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 21:33:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=208</guid>
		<description><![CDATA[前回ではCakePHPのFileクラスの機能を紹介しましたが続いてよく使いそうな機能をピックアップしてみます。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのFileクラスについて、また少し。。。</p>
<p>前回ではCakePHPのFileクラスの機能を紹介しましたが<br />
続いてよく使いそうな機能をピックアップしてみます。<br />
全部で11個程ですが（汗<br />
<span id="more-208"></span><br />
ではまず1つ目</p>
<pre>delete()</pre>
<p>セットされているファイルの削除を行います。</p>
<pre>ext()</pre>
<p>セットされているファイルの拡張子を取得します。</p>
<pre>name()</pre>
<p>セットされているファイル名を取得します。</p>
<pre>exists()</pre>
<p>セットされているファイルが存在するかどうか調べます。</p>
<pre>size()</pre>
<p>セットされているファイルのサイズを取得します。</p>
<pre>writable()</pre>
<p>セットされているファイルが書き込み可能かどうかを調べます。</p>
<pre>executable()</pre>
<p>セットされているファイルが実行可能かどうかを調べます。</p>
<pre>readable()</pre>
<p>セットされているファイルが読み込み可能かどうかを調べます。</p>
<pre>owner()</pre>
<p>セットされているファイルの所有者を取得します。</p>
<pre>group()</pre>
<p>セットされているファイルのグループを取得します。</p>
<pre>lastAccess()</pre>
<p>セットされているファイルの最終アクセス時刻を取得します。</p>
<pre>lastChange()</pre>
<p>セットされているファイルの更新時刻を取得します。</p>
<p>とまぁ長々とですが、よく使いそうなものをピックアップしてみました。<br />
参考になればと（汗</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_file_class_other/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　Fileクラスの利用</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_use_fileclass/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_use_fileclass/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 17:07:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[その他クラス]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=204</guid>
		<description><![CDATA[CakePHPではファイルを開いたり閉じたりを処理してくれるクラスがあります。PHPでは「fopen」などを利用しますが]]></description>
			<content:encoded><![CDATA[<p>CakePHPではファイルを開いたり閉じたりを処理してくれるクラスがあります。<br />
PHPでは「fopen」などを利用しますが、その処理をフレームワークに任せてしまうのも<br />
ひとつの手かと思います。</p>
<p>ではまず「File」クラスを利用する方法を。。。<br />
<span id="more-204"></span><br />
「File」クラスを利用するには、このクラスを変数に格納しなければ利用できません。<br />
コントローラーやモデルのように「$this-&gt;」みたいな使い方ではないのでご注意を（汗</p>
<p>とはいってもコーディングは簡単です（笑<br />
利用するには</p>
<pre>$fileClass=new File('ファイルへのパス');</pre>
<p>だけです。<br />
クラス自体はCakePHPを実行している段階で読み込みをしているため<br />
変数に対してクラスを指定するだけで利用できるようになります。<br />
第1引数では利用するファイル名を絶対パスまたは相対パスで指定します。<br />
また複数のファイルの場合は再度同じように記述することで何度も利用できます。</p>
<p>続いてセットされたファイルを読み込むためには続いて</p>
<pre>$fileClass-&gt;read();</pre>
<p>と記述するのみです。<br />
読み込みが正しく行われれば返り値には指定ファイルを内容を、<br />
失敗した場合は「false」が返されます。<br />
「read()」には引数が用意されています。</p>
<p>通常では指定する必要はありませんが指定する場合は次のようになっています。</p>
<p>第1引数では読み込みを行うファイルの読み込み量を指定します。<br />
PHP関数の「fread」の第2引数に値します。<br />
指定が無い場合はCakePHP側で自動処理します。</p>
<p>第2引数では読み込みの指定方法を指定します。<br />
指定とはPHP関数の「fopen」の第2引数「ｒ」や「ｗ」などに値します。</p>
<p>まずは基本を記述してみましたが、とりあず今回はここまでとします（笑</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_use_fileclass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
