2011-03-20

より良いPHPerにならないための20Tips

http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/

良いPHPerだって?そんなものは丸めゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。

つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。

それじゃ、始めよう。

1. ?>を使うな

?>なんて使っちゃいけない。そう俺たちはBAD PHPer。

無駄ホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。

2. 設定ファイルPHPで書くな

require_once("config.php");

未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。

ダメだ、早く何とかしないと。

大抵このconfig.phpの中身はこうなっている。見て絶望だ。

$hoge_path = '';
if (!LOCAL) {
    define('FOO_FLAG', 1);
    if (HONBAN) {
        define('HOGE_FLAG', 1);
    }
    else if (TEST) {
        define('HOGE_FLAG', 2);
    }
}
else {
    $hoge_path = '/local';
    define('FOO_FLAG', 2);
    define('HOGE_FLAG', 3);
}

define('HOGE_URL', $hoge_path.'/hoge/');

こういうのが延々と続くわけだ。もういやだ。もう見たくない。

本番環境テスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。

なまじPHPな設定ファイルのせいで処理をついつい書いてしまう。そしてどんどん複雑になってしまう。

やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである

そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。

# 本番環境設定ファイル
foo_flag: 1
hoge_flag: 1
hoge_url: '/hoge/'
# テスト環境設定ファイル
foo_flag: 1
hoge_flag: 2
hoge_url: '/hoge/'
# ローカル環境設定ファイル
foo_flag: 2
hoge_flag: 3
hoge_url: '/local/hoge/'

3. コメントを信用するな

そう、あなたはこんな状況に遭遇したことがあるんじゃ?

// ここで後の処理のためにhogeメソッドを呼び出しておく
$q->foo();

// $a['foo']はここに来る時点で真のはず
// 2010-03-10 判定がおかしいので修正
// 2010-06-21 やっぱり値が入ってる方が正しい
if ( !isset($hoge[0]) ) {
}

コメント保守されない。そう、それは真実。こんなコメント発見したら即効削除しよう。コメントは基本信じるな。

俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。

4. タブとうまく付き合うしかない

わかる。いいたいはとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。

タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)

そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。

この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。

私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。

5. 変数名に時間をかけるな

われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。

御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。

そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。

コンパイラ様に保証されてない状態での

$iNumber = 'aaa';

になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。

6. 変数初期化場所

変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。

$foo = null;
$foo = $q->foo();

こんな初期化意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう

$foo = null;
if ( $hoge ) {
    $foo = 1;
}
else if ( $bar ) {
    $foo = 2;
}

このとき初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。

7. 不正なら常に死ね

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    return $bReturn;
}

(中略)

もし、何かしらの理由で、あなたの書いたif文が間違っていたら?

この書き方をしていれば、間違った値に対して、常にfalseが返る。

私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータ入力されるまでは、動かないコードを書くべきだ。

trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    else if ($i == 1) $bReturn = false;
    else throw new Exception("bad status! $i");
    return $bReturn;
}

中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね

8. 連想配列キーアクセスする場合

単なる配列に対して数値をクオートで囲う必要はない。

連想配列キーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。

更に後世のプログラマ処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にした場合はconstantを使うと良い。

// 定数のFOOを使うよということが明確になる
print $a[constant('FOO')];

9. echoよりもprintfを使え

もし、文字列変数の値と一緒に出力するときPHPではコンマの代わりにprintfを使うことが使える。

なぜ?コンマを使うよりも可読性がグッとあがるから

printf( “Hello, my name is %s“, $sName);

以下の代わりに上記のコードを使う。

echoHello, my name is “, $sName;

出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。

10. 三項演算子は一回まで

三項演算子はとても有効だ。しか優先順位に難があるせいで三項演算子ネストしようとすると以下のようなコードになってしま

$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));

括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めゴミ箱にでも捨てちまえ。

11. 真偽値のチェックは生でいけ

if ( $flag ) {
}

仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。

もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。

12. ++と--の演算子を見極めろ

インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい

けがからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。

13. 代入演算子を使え

文句なしだ。これは文句がない。

他にも色々あるので覚えておこう

$a %=  1;
$a &=  1;
$a |=  1;
$a ^=  1;
$a <<= 1;
$a >>= 1;

14. 変数dump関数はより便利に

てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。

なのでdivを使って以下のようにしとくと便利だろう。

function p($var) {
    echo "<div align='left' style='background-color:white;color:black;'><pre>";
    print_r($var);
    echo "</pre></div>";
}

15. 定数から手を洗え

君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!

大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがからなくなってるパターンが多い。

貴様たいなもんに、定数は制御できん。いいか設定ファイルYAML等のデータで持つようにし、その連想配列データ構造を一つ持ってるだけで定数の変わりになる。

このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めゴミ箱へ捨ててしまうといい。

認識を改めろ。俺たちはより良いPHPerにならないために努力している。

16. $_GETと$_POSTを生で使うな

できれば何かしら簡単なクラスでもいいのでラップしろ。

class Request {
    private $parameters;
    private $method;
    function __construct () {
        $this->method = $_SERVER['REQUEST_METHOD'];
        if ( strtoupper($this->method) === 'POST' ) {
            $this->parameters = $_POST;
        }
        else {
            $this->parameters = $_GET;
        }
    }
    function param ($key) {
        return isset($this->parameters[$key]) ? $this->parameters[$key] : null;
    }
}

これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!

17. 関数だのオブジェクトだのの問題ではな

例が良くない。こんなのは引数20個ある関数からset20回呼ぶオブジェクトに変わっただけではないか

そもそもこの20個の引数はなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし20個も引数取る時点設計が間違えている。

何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。

そんなことで悩んでる暇があったら設計を見直せ。

18. メソッドチェインを愛用せよ

スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。

ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。

19. コードの汎用化は慎重に

どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。

・・・と、いうのはやめなさい。

一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。

まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。

かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!

20. 結合度は適切に減らし、適切に結合せよ

あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。

気を抜いて。そう気を抜いて。所詮あなたコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。

結合度を減らすというのは非常に難しい何度何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。

まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。

そしてその後に、一部分使いましたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。

何事も経験が必要である経験を積まないプログラマ丸めゴミ箱に捨ててしまえ。

さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だってaddとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか

function add_result_output ($iVar, $iVar2) {
    $r = add($iVar, $iVar2);
    echo result($r);
}

もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!

最後

このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。

しかしもう一度タイトルを確認してほしい

あくまでも「より良いPHPerにならないための20Tips」なのだ。

君はこの記事を鵜呑みにしてはならない。PHPPHPと見抜けないPHPerはPHPを使うのは難しい

おまけ

もし、あなたPHPプログラマなら、公式のPHPドキュメントあなたのケツの穴を拭くための紙になるだろう。

私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。

あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。

この記事があなたの役に立たない事を。

どんなコメントでも待ってます

ふざけんな!

個人的な感想

この記事に書かれている内容は、丸めゴミ箱に捨てた方が良いレベルです

もしここまで読んでしまったら、丸めゴミ箱に捨てましょう。

プログラ増田のあなぐら

トラックバック - http://anond.hatelabo.jp/20110320223445
  • http://anond.hatelabo.jp/20110320223445

    ペロペロ 1. htmlのはき出しがあるやつは?&gt;を書いたほうがいいよ。それ以外は最近はかないのがはやりだねさらに昔はevalとかで書いてた 2. configこれはwwwやpublic_html以下にしかconfigを配...

  • http://anond.hatelabo.jp/20110320223445

    21. 分散SCMを使え なにはともあれまずはコミットだ 粒度だクソだはpushするときにかんがえろ 1コミットで合わせて全然関係ない別の場所を変更したおまえは死刑だ

  • プログラ増田のあなぐら

    &#52;&#48;&#34892;&#12391;&#20316;&#12427;&#80;&#101;&#114;&#108;&#29992;&#12486;&#12531;&#12503;&#12524;&#12540;&#12488;&#12456;&#12531;&#12472;&#12531; &#80;&#101;&#114;&#108;&#12398;&#67;&#108;&#97;&#115;&#115;&#58;&#58;&#68;&#97;&#116;&#97;&#58...

    • [perl]「,」と「=&gt;」の違いについて

      結論→一緒。 すまん嘘。 ほぼ同じ意味だって言いたかったの。カンマもイコールダイナリもほとんど同じ感覚で使用できる。 唯一つ違うのはイコールダイナリの左辺に置いた文字列は...

    • [perl]内部的に数値か文字かを判別する

      どうーでもいいーですよー。 どうでもいい話ー、聞いてください。 Perlというやつは一応内部的には数値か文字列かをちゃんと分けて変数の管理をしているのです。 でわ、現在ある変...

    • Shift_JISにおける危険な文字まとめ

      今時Shift_JISでプログラミングするバカな奴はいないだろうけど折角まとめたので公開 2バイト目がアスキーコードど丸被りしているものを列挙する @ [ \ ] ^ _ ` { &#124; }...

      • [セキュリティ]今日は増田的情報セキュリティの日

        私は単なる一増田でしかないのだが、なんとなく今日を増田的情報セキュリティの日とすることに決めた。 なぜって、今日は、年末年始という忙しく、そして狙われやすい時期をはさみ...

      • [UTF8][EUC-JP][Shift_JIS]

        Shift_JISにおける危険な文字まとめ 携帯サイトをUTF-8で出力するかShift_JISで出力するか - F.Ko-Jiの「一秒後は未来」

    • [perl]autobox::Unix

      autoboxが流行ってるのになんで誰もコレを作らないのか不思議遊戯 package autobox::Unix;sub SCALAR::rm { my $dir = shift; my $option = shift; `rm $option $dir`;}# etc・・・use autobox;use autobox::Core;use autobox...

    • [PHP]PHPでPerlのqwを実現するお!

      function qw ($str) { return preg_split(&#39;/&#92;s+/&#39;,$str,-1,PREG_SPLIT_NO_EMPTY);}$data = qw(&#39; hoge muge dae&#39;);print_r($data); にゃろめ。 プログラ増田のあなぐら

    • [ruby]rubyでNabeAtzz

      そろそろ FizzBuzz に飽きた - にぽたん研究所 NabeAtzzが空前のブームということで俺もRubyで書いてみた。 list = %W/さん ろく きゅう じゅうに じゅうさん じゅうご じゅうはち にじゅういち ...

    • 敬意を払おう

      フレームワークとか使ってるともはや隠蔽されすぎて自分で実装しようなんて思わないのが普通である。 ましてや車輪の再開発などもってのほか、バグを生み出す温床にしかならない。 ...

      • http://anond.hatelabo.jp/20160323090449

        ブコメの。 さそりアーマーに殺される夢を見た増田 俺はさそりアーマーに殺される夢を見たな 80年代女性アイドル論の増田 マスダ80年代女性アイドル論~総論 おまえは今まで食っ...

    • PerlのClass::Data::Inheritableの解析

      唐突にClass::Data::Inheritableのソースコードについて説明してやんよ。 使い方とかの説明はこの辺でも読んでから出直して来い、ごるぁ! まぁとりあえずソース見てみろ、下記にはっつけ...

    • 4Uの画像が美しすぎてPerlでプログラム組んでみた

      4Uって知ってるかい? http://4u.straightline.jp/ ”世界中の美女画像を皆でシェアするソーシャルイメージブックマークサービス” とのことさ。それはほんともう美しい画像が満載で毎日見...

      • http://anond.hatelabo.jp/20080821224627

        これのおかげで画像ファイルがとうとう8,000個(1GB!)を超えてしまい、どうしたものかと思っていたところ、いいものを発見。 Vredefort(フレデフォート) いわゆるデジタルフォトフレーム。SON...

        • http://anond.hatelabo.jp/20080821224627

          おー、使ってくれてる奇特な奴がいるとはうれしいねぇ。 感謝の気持ちを込めて実はアレから少しバージョンアップしてるのでそれを公開しますよ! 改善点は2点。 終了判定の変更 ...

          • http://anond.hatelabo.jp/20080822142610

            バージョンアップ、キタ━━━━━━(゜∀゜)━━━━━━ !!!!! [明日ためす]

          • http://anond.hatelabo.jp/20080822142610

            スーパーpre記法がアレなまま直ってないわけで。 姉妹サイト(?)ができていたわけで。 なにやらcookieを食べようとした形跡があるわけで。 #!/usr/local/bin/perl -wuse strict;use warnings;use Web::Scraper...

    • [perl][Moose]Moose?Mooseってなんだ?あれか?整髪料か?え?Perl?

      最近Perl界隈ではMoose、MooseってなんかMooseってのが流行ってるらしい。 もう完全に出遅れてしまったので増田で書き殴ってみる。 自分自身のブログでは、さもずっと前からMoose知ってた...

    • [perl]もういつでもどこでもだれでもMooseでいいじゃねぇか

      おれはもうMooseしかつかわねぇ。後にも先にもMooseMooseMooseMooseMoose!!!!!!!!!!!1111111 ってな人の為にいつでもどこでもMooseする。automooseを実装しますた。 package automoose;use stric...

    • うんコード

      例えば下記の擬似コード i = 1; while( i &#38; 7 ) { i++; } 勘弁して。いや、わかるよ。言いたいことはさ。でも俺こういう書き方慣れてないから脳内で素早く2進数変換できないの。 いや単...

    • 増田でリンク名付きでURL張ると化けるので

      つまり下記のような書き方をした場合の話 [http://anond.hatelabo.jp/0000000:title=あああテスト] キーワードがリンクされてしまってうまくリンク名として認識されない。 詳しくはこの記事を読...

    • PHPの比較の素晴らしさ加減は正常

      if ("0x0A" == "10") { print '(´ε` )チュッ';} チュッ。されちゃいます。 文字列であっても整数と解釈できる文字列の場合は勝手に型変換しやがる今世紀最大の愚行を犯してしまうっての...

      • http://anond.hatelabo.jp/20090617130518

        興味深い。できたらblogでやってほしいところ。 増田だと流れちまうからなあ。

      • http://anond.hatelabo.jp/20090617130518

        プログラミングのこういう細かいところが死ぬほど嫌い。発狂するほど嫌い。 文字コードとかマジクソが死ねよって感じ。 こういうののせいでいつまでたってもプログラミングが好きに...

        • http://anond.hatelabo.jp/20090617132348

          PHPみたいな糞とまともなプログラミング言語を一緒にするなよw 文字コードについては言語レベルではどうにもならんことはあるが、他の言語での扱いは少なくともPHPよりは楽。 バッド...

          • http://anond.hatelabo.jp/20090617140839

            PHPに限らず、CとかC++もめんどくせーこと多くて嫌いなんだよ…。 あ、C/C++もまともな言語じゃないっすか。そうっすか…。

            • http://anond.hatelabo.jp/20090617144121

              C/C++はあくまでもCPU依存性を減らしたアセンブラであって、面倒くささを耐える代わりに速度を稼ぐという特殊用途言語なんだから、「プログラミングは面倒だ」というには局所的すぎる...

              • http://anond.hatelabo.jp/20090617212621

                バッドノウハウ…! これですよ。こういうのがマジウザい。 何がバッドノウハウだよただ仕様が終わってるだけじゃねーかカスが!って思う。 ああいうクソ仕様素晴らしい仕様をいか...

                • http://anond.hatelabo.jp/20090617215552

                  バッドノウハウってのはかっこつけた単語じゃなくて、奥が深い症候群を戒めた語だよ。 自分が知ってる「業界の雰囲気」ってのが偏ったものだと知覚した方がいい。 それが相応しい...

                  • http://anond.hatelabo.jp/20090617223655

                    職務的にはC++が適してるから使ってるんだなあこれがまた。 業務系SEやってる友達と話したときはC++wwwねえよwwwせめてC#にしとけwwwって感じだったけど。 業務系システムはプログラミン...

            • http://anond.hatelabo.jp/20090617144121

              C・C++の面倒くさいことって具体的に何? 自分は仕VB・C・C++しか使ったことないが、面倒くさいと思ったことない。 他の言語ってそんなに楽なんだろうか?

              • http://anond.hatelabo.jp/20090617222616

                その経歴なら是非スクリプト言語を使ってみることを勧める。 Ruby, Perl, Pythonのうち1つは覚えた方がいい。絶対役に立つよ。 一昔前ならPerlを進めてたところだけど、今ならRubyかな。 ht...

              • http://anond.hatelabo.jp/20090617222616

                型。状況や文脈を判断してよきに計らってほしい。 ポインタ。と言うよりメモリ管理か。必要に応じて増やすなり減らすなりよきに計らってほしい。

              • http://anond.hatelabo.jp/20090617222616

                めんどくせーめんどくせー言ってる増田だけど。 C/C++はまずガベージコレクタが無いのがめんどくさすぎる。いちいちライブラリ導入したりboostのスマートポインタ使ったりしなきゃいけ...

                • http://anond.hatelabo.jp/20090617231810

                  適材適所 sed ちょっとした正規表現抜き出しに perl そこそこの文書処理に Java わりと何でもいけるが、わりと平均的にめんどくさい JSP メモリ64K制限さえなければすばらしかったが、Ja...

      • http://anond.hatelabo.jp/20090617130518

        PHPで一番困るのは、この手の変換が直感的でも統一的でもなことだな。 「自分が何をしようとしているのか」が素直に書けないんだよね。 言語として元になっているPerlにも文字と数値...

      • http://anond.hatelabo.jp/20090617130518

        PHPの「==」は「数値として比較する」ためのものであって、そもそも文字列として比較するときに使うためのものではないという説。 文字列比較を意図するのであれば、 if (strcmp(&quot;0x0A...

        • http://anond.hatelabo.jp/20090617164618

          文字列比較を意図するのであれば、 if (strcmp("0x0A", "10")) { print '(´ε` )チュッ';} とすべき。当然チュッされない。 strcmp()は文字列が等しいときに0になるから、これだとチュッされ...

        • http://anond.hatelabo.jp/20090617164618

          そこの増田よ。 strcmpの使い方を間違っておられる。 さっと手元で書いたから間違えたのならまだいいが、いつもその書き方をしてるのなら君書いたプログラムには重大なバグが潜んで...

      • PHPではa==b, b==cでもc!=aなことがある

        PHPの比較の素晴らしさ加減は正常 @ はてな匿名ダイアリー PHPの「==」は数値比較なので、文字列は数値に変換されてから比較される。 PHPの「文字列→数値」の暗黙の変換は、文字...

      • http://anond.hatelabo.jp/20090617130518

        ===演算子を使えよ if ("0x0A" === "10") { print '(´ε` )チュッ';}else{ print '\(^o^)/';} \(^o^)/ ==演算子は方をキャストしながら、ほぼ同じなら同じと見なせという意味。 HTMLとかで曖昧に...

        • http://anond.hatelabo.jp/20090618113950

          自己レス 012とかは、よく桁のパディングで 000001 と 1が同じであることを見つけるとかって処理をするから、8進数と見なしてくれるより、10進数で0詰めって見なしてくれた方が、テキ...

        • http://anond.hatelabo.jp/20090618113950

          もちつけ。 ===演算子を使うなとは書いてないし、8進数使いたいとも書いてない。 元記事はただ事実をありのまま書いているだけだ。 そして誰も「つのだ★ひろ」には突っ込まないw

          • http://anond.hatelabo.jp/20090618115402

            えー、PHPの世界ではそういうときは===をつかうってなってるのに・・・ わざわざ==を使って 他の言語の規則を持ってきてどうのこうの言って===に触れないってのは、ちょっと意地悪い...

            • http://anond.hatelabo.jp/20090618115804

              ===なんていう意味不明な変態演算子をわざわざ使わなきゃいけない言語なんて…。 まぁPHPさわったことないけど。

            • http://anond.hatelabo.jp/20090618115804

              String型同士の比較であっても整数と解釈される文字列の場合は整数に変換される。 この仕様は知っていたが、まさか0x0Aという文字列が、普通にキャストした場合は0にしかならないのに...

              • http://anond.hatelabo.jp/20090618121442

                もともと if("0x0a" == 10){ } を成り立たせた方が都合がよい。というのの応用で "0x0a" == 10 == "10" となるだけだからねぇ。 if ("0x0A" == 0x0A) { print '(´ε` )チュッ';}else{ print '\(^o^)/';} は'(...

      • [PHP]PHP「”0x0A” == ”10”はTRUEですがよろしいですか」

        ぼく「えっ」 PHP「”0x0A” == ”10”はTRUEになりますが」 ぼく「いえFALSEです」 PHP「えっ」 ぼく「えっ」 PHP「まだ比較したことがないということでしょうか」 ぼく「えっ」 PHP「えっ」 ...

      • [PHPコーディング規約][PHP]

        PHPコーディング規約  http://www.sksk.info/php.html 404 Blog Not Found:そろそろPHPに関して一言いっとくか  http://blog.livedoor.jp/dankogai/archives/50835571.html 404 Blog Not Found:「PHPなめんな」と「(Perl|Pytho...

        • http://anond.hatelabo.jp/20090618152620

          こうやって並べてみると PHP(C/Java/Ruby/Python好きな物に置換可能)は、良い・悪いの議論って、 本当に、隣の葡萄はすっぱい。俺のレモンは甘い 議論なんだなぁと。

      • 「はてな匿名ダイアリーによるプログラミング言語ユーザー論まとめ」をトゥギャりました

        プログラミング言語ヒエラルキーにおける罵倒 http://anond.hatelabo.jp/20070502200124 phpのいやなところ / perlのいやなところ http://anond.hatelabo.jp/20070522174725 LL編プログラミング言語ヒエラルキーに...

    • PHPのあの関数をPerlでやるには?

      元ネタ http://phpspot.org/blog/archives/2009/12/phpjavascriptph_1.html 面白そうだと思ったので僕もやってみた。モジュールはPerl5.8系の標準モジュールのみ利用可という制限。 全部はキツイので関数...

    • [PHP]create_functionで生成された匿名関数の一覧を得る関数

      ひーほー。いやぁさてさて一体このコード中に何度create_functionで匿名関数が生成されたのかふと気になったあなたのためにこんな関数を作ってみたよ! function get_lambda_functions () { $i ...

    • うたまっぷと歌ネットの歌詞をコピペするブックマークレット

      を作ってみた。 うたまっぷ javascript:(function(){%20var%20t;%20var%20d=document;%20var%20h=new%20XMLHttpRequest();%20var%20r=d.location.href.match(/surl=([A-Za-z0-9]+)/);%20h.open('GET','phpflash/flashfalsephp.php?unum=?'+r[1],true);%2...

    • PHPでQuineプログラミング

      &#82;&#117;&#98;&#121;&#12391;&#12358;&#12393;&#12435;&#12370;&#81;&#117;&#105;&#110;&#101;&#40;&#12392;&#65;&#65;&#22411;&#81;&#117;&#105;&#110;&#101;&#12398;&#20316;&#12426;&#26041;&#35611;&#24231;&#41; &#112;&#101;&#114;&#108;&#32;&#45;&#32;&#81;&#...

    • [ruby]闇プログラマーによる、うるう年の判定処理

      以下の記事を読んだ私は違和感を覚えた。 &#31169;&#12364;&#12477;&#12501;&#12488;&#12454;&#12455;&#12450;&#25216;&#34899;&#32773;&#12434;&#12420;&#12417;&#12383;&#29702;&#30001; 今時のソフトウェア技術者というものは...

      • http://anond.hatelabo.jp/20100925163206

        sqlとかでisdateしてやれば済むお話しさー。 最初の要件定義にうるう年について書かれていなければ、うるうどしが来たらうるう年対応でお金をもらえばいいじゃない。 というより、綺麗...

        • http://anond.hatelabo.jp/20100925165528

          超人が500行で1時間で書いたスマートなプログラムよりも、凡人が10000行、1カ月かけてつくったプログラムのほうがお金にはなるんだ。 マジレスすると、上記の条件であれば、案件...

    • プログラミング出来ない奴あっちよりこっち来い

      http://anond.hatelabo.jp/20130322031333 プログラミング出来る方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。 こんなタイトルに...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

      • 英語しゃべれない奴ちょっと来い

        http://anond.hatelabo.jp/20130322202542 コレ見て書いてみたくなっただけ。 英語が話せるようになる方法教えるだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる...

  • より良いPHPerになるための20Tips

    去年の話ですが、海外でこんな記事が上がっていました。 20 Tips you need to learn to become a better PHP Programmer 記事の内容は、かなりレベルが低いです。 しかし、初心者のうちに知っておけば、...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん