やったことだけ書く備忘録

PHP5.4からは即時stdClass生成がWarningエラーを吐くようになった話

短いですが、メモ程度に書いておきます。

2013/06/06 Codeigniterのエラー処理について追記しました



かなり前からCodeIgniterで、stdClassを即時生成してプロパティを生やすコードを書いてました。



$data
->hoge 'huga';

$this->load->view('view'$data);
 

みたいなコードです。誰かのコードを参考にした記憶があるんですが、まぁそれはいいとして。
CIを使ってる方なら同じような書き方をしてるかもしれません。あ、してないならいいですすいません。


PHP5.3はStrictエラー


これが通用するのはPHP5.2までなんですね。PHP5.3からはStrict Errorの警告が出ます。



# PHP5.3.21
$data->hoge 'huga';

=> 
PHP Strict Standards:  Creating default object from empty value
 


まぁStrict違反だしまぁいいかー…と思ってたんですが(いや、エラーは無い方がいいんですけどね)



[追記]



「いや、そもそもPHP5.3.xで気付かない方がおかしくない?」と思われた方もいるかもしれません。実は、CodeIgniter上でコーディングしている場合はこのエラーは出ないのです。だから気が付かなかった。

CodeIgniterは、独自のエラーハンドラー内でStrictエラーをもみ消すという処理を行なっています。(もみ消す、という表現が正しいかはさておき)私の手元のCI2.1.3でも確認できました。具体的には、system/core/Common.phpの_exception_hanlder()関数の中です。




if ( ! function_exists('_exception_handler'))
{
        function 
_exception_handler($severity$message$filepath$line)
        {
                 
// We don't bother with "strict" notices since they tend to fill up
                 // the log file with excess information that isn't normally very helpful.
                 // For example, if you are running PHP 5 and you use version 4 style
                 // class functions (without prefixes like "public", "private", etc.)
                 // you'll get notices telling you that these have been deprecated.
                
if ($severity == E_STRICT)
                {
                        return;
                }

                
$_error =& load_class('Exceptions''core');

                
// Should we display the error? We'll get the current error_reporting
                // level and add its bits with the severity bits to find out.
                
if (($severity error_reporting()) == $severity)
                {
                        
$_error->show_php_error($severity$message$filepath$line);
                }

                
// Should we log the error?  No?  We're done...
                
if (config_item('log_threshold') == 0)
                {
                        return;
                }

                
$_error->log_exception($severity$message$filepath$line);
        }
}
 


ということで、$severtyにはエラーレベルが入りますが、それがE_STRICTの場合はreturnしてエラーを吐かずに握りつぶしているようです。個人的にはFWがそこまで面倒見るよりは、ダメなものはダメって警告は出してくれる方がいいような気もしますが…

とまぁ、そんなわけでCodeIgniter上ではStrictエラーは表示されないようになっているので、他のFWで途端にエラーが出たりするかもしれません。エラーのでないコードを心がけたいですね(自戒)



PHP5.4からはWarningエラー


なんとPHP5.4からはエラーレベルがWarningまで上がってるんですねー(;´Д`)



# PHP5.4.11
$data->hoge 'huga';

=> 
PHP Warning:  Creating default object from empty value
 

さすがにWarningだとerror_reportingで消すのも憚られるレベルなので、ちゃんとstdClassで初期化しなさいよ、という話でした。




# PHP5.4.11
$data = new stdClass;
$data->hoge 'huga';

=> ( 
´∀`)b
 


これならOKですね。あ、顔文字は出ませんけど。

« 前の記事 次の記事 »

46件のコメント

Open さん

Grade A stuff. I'm untulsqionabey in your debt.

Heejin さん

I hate my life but at least this makes it <a href="http://vlvlxowel.com">bearebla.</a>

xeajipoyoro さん

http://without-prescription-buyretin-a.net/ - without-prescription-buyretin-a.net.ankor <a href="http://doxycycline100mgbuy.com/">doxycycline100mgbuy.com.ankor</a> http://cialistadalafillowest-price.net/

woquuna さん

http://without-prescription-buyretin-a.net/ - without-prescription-buyretin-a.net.ankor <a href="http://doxycycline100mgbuy.com/">doxycycline100mgbuy.com.ankor</a> http://cialistadalafillowest-price.net/

uokuyitaug さん

http://without-prescription-buyretin-a.net/ - without-prescription-buyretin-a.net.ankor <a href="http://doxycycline100mgbuy.com/">doxycycline100mgbuy.com.ankor</a> http://cialistadalafillowest-price.net/

uyuvaepo さん

http://without-prescription-buyretin-a.net/ - without-prescription-buyretin-a.net.ankor <a href="http://doxycycline100mgbuy.com/">doxycycline100mgbuy.com.ankor</a> http://cialistadalafillowest-price.net/

ivufabafos さん

[url=http://without-prescription-buyretin-a.net/]without-prescription-buyretin-a.net.ankor[/url] <a href="http://doxycycline100mgbuy.com/">doxycycline100mgbuy.com.ankor</a> http://cialistadalafillowest-price.net/

enuluxaeo さん

http://usa-onlineprednisone.net/ - usa-onlineprednisone.net.ankor <a href="http://salbutamol-ventolin-buy.net/">salbutamol-ventolin-buy.net.ankor</a> http://online-viagracanada.net/

enorapir さん

[url=http://usa-onlineprednisone.net/]usa-onlineprednisone.net.ankor[/url] <a href="http://salbutamol-ventolin-buy.net/">salbutamol-ventolin-buy.net.ankor</a> http://online-viagracanada.net/

esotaqomewag さん

http://100mgcheapest-price-viagra.com/ - 100mgcheapest-price-viagra.com.ankor <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

uitifijaboz さん

http://100mgcheapest-price-viagra.com/ - 100mgcheapest-price-viagra.com.ankor <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

ojauogorluter さん

[url=http://100mgcheapest-price-viagra.com/]100mgcheapest-price-viagra.com.ankor[/url] <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

iwotuco さん

http://100mgcheapest-price-viagra.com/ - 100mgcheapest-price-viagra.com.ankor <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

elasige さん

http://100mgcheapest-price-viagra.com/ - 100mgcheapest-price-viagra.com.ankor <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

ikagaujowa さん

[url=http://100mgcheapest-price-viagra.com/]100mgcheapest-price-viagra.com.ankor[/url] <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

ekupajoago さん

http://100mgcheapest-price-viagra.com/ - 100mgcheapest-price-viagra.com.ankor <a href="http://tadalafil-buy-5mg.com/">tadalafil-buy-5mg.com.ankor</a> http://20mgprednisone-order.com/

PrenressVew さん

http://allocating.one

ozatckxurefo さん

http://100mg-viagracanada.com/ - 100mg-viagracanada.com.ankor <a href="http://sertralinezoloftonline.com/">sertralinezoloftonline.com.ankor</a> http://20mg-tadalafil-lowest-price.com/

oovenamrqapqo さん

http://20mg-cheapesttadalafil.com/ - 20mg-cheapesttadalafil.com.ankor <a href="http://20mg-cheapesttadalafil.com/">20mg-cheapesttadalafil.com.ankor</a> http://20mg-cheapesttadalafil.com/

iwareresopidz さん

http://20mg-cheapesttadalafil.com/ - 20mg-cheapesttadalafil.com.ankor <a href="http://20mg-cheapesttadalafil.com/">20mg-cheapesttadalafil.com.ankor</a> http://20mg-cheapesttadalafil.com/

gixiwefoguv さん

http://20mg-cheapesttadalafil.com/ - 20mg-cheapesttadalafil.com.ankor <a href="http://20mg-cheapesttadalafil.com/">20mg-cheapesttadalafil.com.ankor</a> http://20mg-cheapesttadalafil.com/

oyipoknamemu さん

http://20mg-cheapesttadalafil.com/ - 20mg-cheapesttadalafil.com.ankor <a href="http://20mg-cheapesttadalafil.com/">20mg-cheapesttadalafil.com.ankor</a> http://20mg-cheapesttadalafil.com/

ipzunikaze さん

http://20mg-cheapesttadalafil.com/ - 20mg-cheapesttadalafil.com.ankor <a href="http://20mg-cheapesttadalafil.com/">20mg-cheapesttadalafil.com.ankor</a> http://20mg-cheapesttadalafil.com/

otitazae さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

ofequroyiki さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

oppoqnueakufv さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

izoagomoyipi さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

qehwaqeumac さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

eucijekasaweu さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

紅蜘蛛 さん

紅蜘蛛:http://www.kanpoucom.com/product/311.html
紅蜘蛛は山藥、枸杞、甘草、欠實、百合などが含まれています。女性は飲用20分後には、心ときめき、吐息は熱くなり、ムズムズし、目には渇望が現れ、急に欲しくなります。あなたとともに愛欲の川を渡る、このとき女性の情熱はほとばしり、ほれているようになります。

福潤宝カプセル さん

福潤宝カプセル:http://www.chinakanpo.com/product/furunbao.html
福潤宝は、力強さ!持続力!を取り戻したい方、是非お試し下さい!

福潤宝のご使用前に必ずお読みください

福潤宝は服用後、30分位から驚くほどの持続効果!朝まで強力にサポート致します!まだまだ眠るには早過ぎますね(^^)

もちろん100%漢方配合で 動悸!頭痛!服用後の虚脱感などの副作用もありません。

D10媚薬催情剤 さん

D10媚薬催情剤:http://www.allkanpou.com/product/D10.html
今話題の超強力媚薬のオリジナル! スペイン蝿などの一部の昆虫が分泌する強力媚薬成分を配合したタイプの媚薬が今人気です。速効性があり、しかも強力なので中国でもこのタイプの媚薬が大流行していますが、こちらはその本家本元のスペイン製超強力媚薬です。

umopegt さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

ijeniel さん

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

中絶薬 さん

三體牛鞭:http://www.allkanpou.com/product/%E4%B8%89%E4%BD%93%E7%89%9B%E9%9E%AD.html
紅蜘蛛(液体)+壮陽丹: http://www.allkanpou.com/product/%E7%B4%85%E8%9C%98%E8%9B%9B.html

藏鞭王 さん

藏鞭王:http://www.chinakanpo.com/product/zangbianwang.html
藏鞭王は腎臓に精力をつけ補う逸品で、その機能は試験を通して実証され、当商品の1錠を服用した後に、3時間以内に連続して4回勃起することができて、そして絶頂の快感を達成します!
sex drops:http://www.chinakanpo.com/product/sexxqr.html

蒼蝿水FLY D5(原液) さん

蒼蝿水FLY D5(原液):http://www.kanpoucom.com/product/317.html
夫妻生活改善、女性性冷淡、性反應遅鈍、増強女性性欲渇望、酒精溶剤、性的快感、女性の体液免疫を調整し、性機能改善、免疫力増進。
SPANISCHE FLIEGE D9:http://www.kanpoucom.com/product/296.html

勃動力三體牛鞭 さん

M6生精片:http://www.allkanpou.com/product/m6shengjinpian.html
999神油 女性用:http://www.allkanpou.com/product/999shengyounvxingyong.html
勃動力三體牛鞭:http://www.allkanpou.com/product/%E4%B8%89%E4%BD%93%E7%89%9B%E9%9E%AD.html

sex drops さん

sex drops:http://www.chinakanpo.com/product/sexxqr.html
sex drops セックスドロップ ドイツ小情人は無色無味の液体です。ドリンクに溶かして飲む、 15分後には、胸がときめき、吐息は熱くなり、ムズムズし、目には渇望が現れ、急に欲しくなります。あなたとともに愛欲の川を渡る、このとき女性の情熱はほとばしり、ほれているようになります。

虫草鹿鞭 さん

虫草鹿鞭:http://www.kanpoucom.com/product/162.html
これらの成分の直接ペニスに入ることができるスポンジの体内部は血管を拡張します.睾銅が再び蘇ることを促進して、再度は芽生えて成長して、発育、ペニスが急速に増大することを促進して、増加するのは太くて、増大して、そこで効果的に性愛を解決することができるのが短くて、早漏を防止します.性愛の時間を延長して、その上人体の内で168時間保存することができて

qutirawilitu さん

http://levitrageneric-cheapest-price.net/ - levitrageneric-cheapest-price.net.ankor <a href="http://cheapest-priceventolinonline.net/">cheapest-priceventolinonline.net.ankor</a> http://levitra-online-cheap.net/

iwocuwefeag さん

http://levitrageneric-cheapest-price.net/ - levitrageneric-cheapest-price.net.ankor <a href="http://cheapest-priceventolinonline.net/">cheapest-priceventolinonline.net.ankor</a> http://levitra-online-cheap.net/

uxonilyu さん

http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

eqeconegudozi さん

http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

iyrdabeqixe さん

http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

asuwaqesajej さん

http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

コメントを投稿する

 画像に表示されている文字を入力してください。