タグ

PHPに関するmasa8aurumのブックマーク (46)

  • PHP 連想配列 array() は単純配列に見えることもあるけど実は常に連想配列

    色々な人が色々な所で書いてるけど、割りと質的なところは気にしてなかったりするらしい。 連想配列って便利 PHPには連想配列というまあまあ便利機能がある。 機能自体はご存知かつ、活用してる人が多いだろう。 これは歴史的にはPerlから連綿と受け継いだものだ。 PHP: Arrays - Manual <?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ]; ?>

    PHP 連想配列 array() は単純配列に見えることもあるけど実は常に連想配列
    masa8aurum
    masa8aurum 2024/02/26
    PHPには純粋な配列がなく連想配列しかない。“キモい挙動がかなりある” 同意。全然「初心者向けの言語」ではない。/ 型の暗黙変換がこれの元凶だと思うが、暗黙変換が嬉しかったことは一度もない
  • ちゃんと理解しておきたい、PHPには純粋な配列がなく連想配列しかないという事実。

    仕事中にPHPの配列の挙動について聞かれました。「どうだったかな」と思い出してみると、PHPの配列は少し変わった動きなので、改めてちゃんと理解しておきます。 PHPには、添字配列がない タイトルには「純粋な配列」と書きましたが、普通に「配列」というと、添字が0から順に連番で並んでいて、それぞれに対応する値が入っているものを指します。 PHPのオンラインマニュアルを見てみます。 PHP においては添字配列と連想配列の間に違いはなく、配列型は 1 つだけで、 同じ配列で整数のインデックスと文字列のインデックスを同時に使えます。 PHP: 配列 – Manual ここでは連想配列と区別するために「添字配列」という言葉が使われていますが、PHPには「純粋な配列」がないと書かれています。 純粋な配列を定義できるような・・・ PHPで、普通の配列を定義するというと、以下のようなコードになると思います。

    ちゃんと理解しておきたい、PHPには純粋な配列がなく連想配列しかないという事実。
    masa8aurum
    masa8aurum 2024/02/26
    “PHPには純粋な配列がなく連想配列しかない” / そう。これのせいでarray_filterでindexが歯抜けになったりする。ありえん仕様 https://anon-193.hatenadiary.org/entry/20091101/1257076854
  • エラー画面やAPIエラーから独自エラーまで! フローチャートでちゃんと理解するLaravelの例外処理とケーススタディ - Qiita

    エラー画面やAPIエラーから独自エラーまで! フローチャートでちゃんと理解するLaravelの例外処理とケーススタディPHPLaravelexceptionlaravel5.5 TL;DR Laravel 5.5 ベース(Laravel 5.7 まで対応) フローチャートでおおまかな処理の流れと、どこでどんなことをするのかを解説します それを踏まえて「こんな時はこうする」というケーススタディを紹介 中小規模のプロジェクトにはそのままコピペで使ってもらえるベストプラクティス的なものを目指しています 実際にこれをベースにしたものが中規模業務アプリに実装されています バリデータ編もあります。 → フロー図で理解するLaravelバリデータの仕組みと、チーム開発でのケーススタディ 動機 個人的にエラー処理の仕組みを理解するために書いたチャートです 自分で勉強しようとしたとき、Laravelのエラー

    エラー画面やAPIエラーから独自エラーまで! フローチャートでちゃんと理解するLaravelの例外処理とケーススタディ - Qiita
  • https://github.com/php-fig/fig-standards/blob/1b4f98ea15e4978a09f9dc16080111fa9212c62e/accepted/PSR-4-autoloader-meta.md

    https://github.com/php-fig/fig-standards/blob/1b4f98ea15e4978a09f9dc16080111fa9212c62e/accepted/PSR-4-autoloader-meta.md
    masa8aurum
    masa8aurum 2021/06/10
    autoload に関わる PSR-4 策定の経緯
  • What Are the Differences Between PSR-0 and PSR-4?

    masa8aurum
    masa8aurum 2021/06/10
    autoload に関わる PSR-0, PSR-4 の違い。PSR-0 は非推奨になった。やりたいことの大枠は同じだが違いがある。
  • PHP arrays aren’t really arrays

    masa8aurum
    masa8aurum 2021/03/24
    PHPの闇。 / キーが整数の array には注意。 foreach でループしたとき、キーの出現順(大小の順ではない)に回る
  • Rubyは果たして死んだのか

    世の中には、数多くのプログラミング言語が存在する。Wikipediaの「プログラミング言語一覧」というページには300以上の言語が列挙されている。現在よく使われている言語に絞っても10や20はあるだろう。 C言語やJavaといった言語の名前を知っている人は多いかもしれない。少し詳しい人なら、JavaJavaScriptは名前こそ似ているものの全く異なる言語だということも知っているはずだ。 そうした中で、とかく「死んだ」とか「オワコン(終わったコンテンツという意味)」と言われがちな言語がある。オブジェクト指向言語の一種である「Ruby」だ。 2017年には「The death of Ruby?」という海外の記事が話題になった。Rubyの人気が以前よりも落ちているのではないかという記事だ。根拠にしていたのは、プログラミング言語別の求人数のランキングや米国電気電子技術者協会(IEEE)が公表し

    Rubyは果たして死んだのか
    masa8aurum
    masa8aurum 2019/04/02
    若い人がPHPを書かなくなっているらしい。が、それは将来のシェア減少にどれだけ関わるか。
  • composer 導入をまじめに考える - Qiita

    これは結構大きいPHPプロジェクトに composer を導入する機会があったので、そのときに考えてたことや行ったこと、使い方などをメモするために書いた。 モチベーション 私達は PHP のパッケージの管理を管理する際は pear と git submodule を利用していた。これらのやり方は意外と長続きした。これらにはついて様々な問題を抱えており、ついに限界がきてしまった。 pear pear でパッケージを導入するには root 権限が必要なので、毎回インフラチームに導入を依頼するのが必要があった。 pear で導入されたパッケージについてバージョンを上げようとすると、全APサーバーで更新をかける必要があった。 これらの点から面倒だったのと、気軽に変更できないので、不要になったものも削除されることなく、放置されるのが問題だった git submodule こちらは pear とは異

    composer 導入をまじめに考える - Qiita
    masa8aurum
    masa8aurum 2018/06/23
    Composer 導入時の注意点。 composer.phar もチェックインするべきなのか。
  • PHPのモダンな開発環境を紹介する - Qiita

    やあPHP! 最近なんだかまともだなぁ PHP開発の上で実用的なツール群について、RubyPythonほどには知名度がないので紹介したい。Windowsのことは知らないので、各自がんばってほしい。 筆者はもともとRubyの方から来たので、Rubyとの比較が多いのは留意されたい。 この記事の内容と直接関連はしないが、併せて読まれたい PHPのin_arrayは罠が多いので注意喚起が必要 - Qiita 準備 MacだとHomebrewがあると依存ライブラリを集めるのが楽でべんり。 これは個人の趣味の話なのだけれど、自分でインストールする実行ファイルは$HOME/local/binに置くのが好きだ。 筆者はZ Shellユーザーなので https://github.com/zonuexe/dotfiles/blob/master/.zshenv#L1-L13 のようにしてる。 PHPBrew

    PHPのモダンな開発環境を紹介する - Qiita
  • モダンPHPアンチパターン - Qiita

    アンチパターンなので、見出しの内容はすべてバッドノウハウです。 前に書いたやつ PHPのモダンな開発環境を紹介する - Qiita PHP - Functoolsを作った - Qiita PHPのlist()はタプル展開のための機能 - Qiita 関係ないけどこれも: シェル、ターミナル、コンソール、コマンドライン 追記: 文中でとりあげた「怖い話」について、ちゃんと説明しました PHP - namespaceとBOMに何の関係があるのさ - Qiita ファイルの最後に?>を書く PHPコードは<?phpで始まり?>で締める。それがPHPの常識(キリッ ……そんなことはもう綺麗さっぱり忘れよう。PHPはテンプレートエンジンではあるが、Webアプリケーションを書く上では、もはやテンプレートエンジンとしての機能は求められなくなりつつある。 不要な?>を書いてはいけない理由は明確で、<?p

    モダンPHPアンチパターン - Qiita
  • DIS例2 / PHPは配列型と辞書(HaspMap)型が区別不能な言語! | PHPを使いもせずDISってる君達へ - Qiita

    PHPはよくDISられることがあります。しかし、実際にはほとんどPHPを利用していない人が印象だけでDISってることが多いような気がします。 そこで、PHPがよくDISられている点について、実際どうなのかをPHP未体験者向けに解説していきたいと思います。PHPを触ったことない人でもわかりやすいようにシンプル目な仕様のRubyを例に説明していきたいと思います!( Ruby触ったことなくても、その他のOOP言語を触ったことあれば雰囲気は理解できるように書いています ) DIS例1 / PHPは配列操作がしづらい PHPの配列操作は扱いづらい等とDISる人たちがいます。実際のところどうでしょうか。 以下のような処理を配列への中間変数を用いず行うコードを例に考えてみます。 0. [2,4,6,8,10]という配列を用意して 1. ↑の配列から8以下の数だけを選択した配列を作る 2. ↑の配列から各

    DIS例2 / PHPは配列型と辞書(HaspMap)型が区別不能な言語! | PHPを使いもせずDISってる君達へ - Qiita
    masa8aurum
    masa8aurum 2018/06/23
    (やむを得ず)phpを使うときに気を付けること
  • array_unique()で値の重複は削除できるけど、キーが飛び飛びになる。array_values()で解決 - Qiita

    <?php //テスト配列 $array = array('test1', 'test2', 'test1', 'test3', 'test2', 'test'); //配列で重複している物を削除する $unique = array_unique($array); //キーが飛び飛びになっているので、キーを振り直す $alignedUnique = array_values($unique); ?> <?php echo("<pre>"); ?> <div> <p>・テスト配列</p> <?php var_dump($array); ?> </div> <div> <p>・重複を削除しただけの配列</p> <?php var_dump($unique); ?> </div> <div> <p>・キーを振りなおした配列</p> <?php var_dump($alignedUnique);

    array_unique()で値の重複は削除できるけど、キーが飛び飛びになる。array_values()で解決 - Qiita
    masa8aurum
    masa8aurum 2018/06/23
    重複削除は array_values(array_unique($arr)) とやる必要がある、ということ。このことに言及している記事が意外と少ない。
  • PHPができても他言語の学習には役に立たない理由を考えてみた。 - Qiita

    PHPしかできない奴はいつまで経ってもPHPしかできない? PHPには下記のような都市伝説があります。 他言語から学んだ者がPHPを習得することは容易いが、PHPから学んだ者が他言語を習得することは難しい。PHPから始めた者は、一生PHPのみで過ごすか、一度PHPを忘れて、初心から他言語を学ぶしかない。 まぁ、言っているのは私一人ですけどね。引用っぽくしてますが、引用元はありません。都市伝説ですので。1 これはとあるRubyの開発者がPHPをdisったことから始まる第2回PHPなめんな選手権2のところで、404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違いにあった、次の言葉がきっかけです。 それは、PHPユーザーは他の言語から学んでいるのか、という点。 PHPにも素晴らしいアプリケーションはありますし、それらを作成している人達も

    PHPができても他言語の学習には役に立たない理由を考えてみた。 - Qiita
    masa8aurum
    masa8aurum 2018/06/23
    “始めに特化した物を覚えると汎化された物が覚えにくい” / 「配列は特殊な連想配列を兼ねる」これが一番嫌だ。ADTで言うlist型とmap型がミックスされてるなんて、ありえない
  • PHPとPythonの違いについてのまとめ - Qiita

    コードゴルフなるものもあり、コードを短く書く競技がある(詳細はこちら)。 対話モード Python3では対話モードという機能が利用でき、1行コードを入力すれば、その内容が評価され、実行される。エラーがある場合、その場で指摘されるため、簡易的な動作確認や計算に便利。 配列 リスト(list)、タプル(tuple)、辞書(dict)、集合(set) PHPで当たり前のように利用していた配列。Python3でもリスト、タプル、辞書、集合といった類似機能があるが利用目的によって、使い分けが必要。 集合を除き、PHPと同様に要素にオブジェクトだけではなく、リスト、タプル、辞書、集合を指定することもできる。 リスト(list) PHPで$a = [1, 2, 3];のような単純な配列であれば、Python3でもa = [1, 2, 3]で表現できる。多次元も可能。i, j, k = aとするとそれぞれ

    PHPとPythonの違いについてのまとめ - Qiita
  • [PHP]pecl,phpize,extensionという単語を見て頭痛がするあなたへの処方箋 · DQNEO日記

    はじめに PHP Extension, pecl, phpize, php-config, *.so これらの単語を見て頭が頭痛になったことはありませんか? pecl installがコケてm9(^Д^)プギャーってなったことはありませんか? 私はあります。 しかしPHPの環境構築をしようと思ったら、PHP Extensionは避けては通れないテーマです。 ひとつひとつの仕組みの裏側を理解すれば怖いことはありませんので、いちど根っこから掘り下げて勉強しておきましょう。 2つに分断されたPHPの世界 PHPの世界では、ライブラリ配布方式が2つの世界に分断されてしまっています。 ライブラリの種類 配布サイト インストーラ 後者の「C言語で書かれたライブラリ」のことを「エクステンション」といいます。実体は拡張子.soファイルです。 php.iniの末尾に"extension=memcache

    [PHP]pecl,phpize,extensionという単語を見て頭痛がするあなたへの処方箋 · DQNEO日記
    masa8aurum
    masa8aurum 2018/02/15
    わかりやすい
  • PHP: a fractal of bad design / fuzzy notepad

    (This article has been translated into Spanish (PDF, with some additions) by Jorge Amado Soria Ramirez — thanks!) Preface I’m cranky. I complain about a lot of things. There’s a lot in the world of technology I don’t like, and that’s really to be expected—programming is a hilariously young discipline, and none of us have the slightest clue what we’re doing. Combine with Sturgeon’s Law, and I have

    PHP: a fractal of bad design / fuzzy notepad
  • Smalltalk・PHPのトレイトとRuby・Scalaのミックスインの違い - Qiita

    シェルリ(Schärli)が発案して Smalltalk でその実効を試したトレイト(Traits。エンティティとしては trait)はちょっとわかりにくい言語機能なので Ruby のモジュールや Scala のトレイト(これまた紛らわしい名前…)に代表されるミックスインと比較してみましょう。 まず、ミックスインというのは Ruby で話題にはなりましたが特に新しい機構というわけではなく、むしろもっとも古く、オーソドックスな多重継承機構です。クラスまたはクラスに準ずるエンティティ(Ruby ならモジュール、Scala ならトレイト(名称詐欺!)、抽象クラスなど、インスタンス生成能を持たないクラス様のもの)を継承パスに任意の数を挿入できる機構がミックスインです。 それに対して、トレイトは継承機構とはまったく関係ないところで機能します。端的には、来であればクラスの一部であるメソッド辞書(ある

    Smalltalk・PHPのトレイトとRuby・Scalaのミックスインの違い - Qiita
    masa8aurum
    masa8aurum 2018/02/09
    Scala の `trait` は実は mix-in では?という話が含まれる。コメントも読む。
  • How to check if PHP array is associative or sequential?

  • PHPをDisってるブログエントリを集めてみた - kなんとかの日記

    スクリプト言語の範疇に入らないかもしれない言語を使っているPHPerのみなさん、こんにちは。 PHP歴史は、Disられ罵られバカにされ続けた歴史です。 日は、その歴史を紐解いてみたいと思います(一部、PHP擁護派のエントリも含んでいます)。 なおここで紹介していない記事で、ほかに紹介してほしいものがあれば、教えてください。 あと引用は一部のみなので、元記事の全文を読むことを強くお勧めします。 2006年 PHPプログラマ in YAPC::Asia 2006 Tokyo - 0330 (twk @ ふらっと) では、PHPの世界に帰ります。Perlの人はRubyをうらやみHaskellにおどろきPHPを軽蔑すると言う文化になっているようです。 このころには、すでにPHPは軽蔑される存在だったようです。 昔、2ちゃんとかでよくあった、Perl = C++ , PHP = VBってな感じ?

    PHPをDisってるブログエントリを集めてみた - kなんとかの日記
    masa8aurum
    masa8aurum 2018/02/09
    2009年のエントリ
  • Xdebug: Documentation » Step Debugging

    Xdebug's step debugger allows you to interactively walk through your code to debug control flow and examine data structures. Introduction # Xdebug interacts with IDEs to provide step debugging functionality, and therefore you also need to configure an IDE that knows how to talk to Xdebug with the open DBGp protocol. This protocol is supported by nearly every PHP IDE (including Visual Studio Code a