タグ

ブックマーク / qiita.com/mpyw (25)

  • PDOフェッチパターン大全 - Qiita

    忙しい人向け Q. PDO::FETCH_ASSOCでフェッチするとき,キーを整数連番じゃなくてidにする方法は? A. PDO::FETCH_UNIQUEを組み合わせる. $sql = "SELECT id, * FROM people WHERE gender = 'female'"; $rows = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE); var_dump($rows); /* [ 3 => ['id' => '3', 'name' => 'Lucy', 'gender' => 'female'], 5 => ['id' => '5', 'name' => 'Mary', 'gender' => 'female'], ] */

    PDOフェッチパターン大全 - Qiita
  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
  • Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた - Qiita

    元ネタ @localdisk さんの記事です。 こちらで概ね適切に説明されているものの,文章のみで図が無くて直感的に把握しづらいので,初心者にもすぐ飲み込ませられるように図に描き起こしてみました。 図 解説 illuminate/auth: 最小限の認証認可コアロジック コアコンポーネント群の laravel/framework に含まれているものです。 Socialite 以外のすべてのパッケージが,実質このコアに依存していることになります。 以下の記事でこのパッケージの詳細について説明しているので,ここでは端折って説明します。 伝統的 Cookie ベースのセッション認証 こちらでも解説している, 「Cookie に識別子を載せ,それに対応する情報はサーバ側のファイルに記録する」 という手法に近いものです。 実装は illuminate/session にあり, PHP ネイティブのセ

    Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた - Qiita
  • 【Laravel】 Eloquent の has() や whereHas() が遅い?なら速くしてやるぜ - Qiita

    Laravel】 Eloquent の has() や whereHas() が遅い?なら速くしてやるぜPHPMySQLSQLLaravelEloquent はじめに 2021/10/21 追記: Postgres は MySQL と異なり,相関サブクエリの JOIN 最適化もカバーしています。それゆえ,主にこの記事の内容は MySQL を想定したものとなっております。 (情報提供: @KentarouTakeda) 2022/12/22 追記: MySQL もバージョン 8.0.16 以降では Postgres に似た最適化が入るようになりました。そのため,殆どの場合ではもはや has() whereHas() を素直に使うだけで十分になっています: 【ガチ検証】Eloquent whereHas() はもう遅くないよ! Laravel は「リレーション先が存在するか」という制約条件を

    【Laravel】 Eloquent の has() や whereHas() が遅い?なら速くしてやるぜ - Qiita
  • 吉田さんは通すけど𠮷田さんは通さないミドルウェア - Qiita

    元ネタ utf8 な MySQL データベースを保守する湯婆婆「𠮷田?贅沢な名だね。今からお前の名前は吉田。いいかい、吉田。分かったら返事をするんだ、吉田!」 — 𝑺𝒐𝒄𝒊𝒂𝒍 𝑫𝒊𝒔𝒕𝒂𝒏𝒄𝒆 (@mpyw) April 30, 2020 utf8 から utf8mb4 に早く乗り換えたいけどいろいろとレガシーアプリケーションには事情があるんじゃ!!! 実装 𠮷田さんが会員登録しようとすると 400 Bad Request を返します。エラーメッセージはできるだけ親切にしています。共通モジュール的な場所に置いたので, Translator はインジェクトしてるけど文章自体は直接埋め込んでます。 <?php namespace Libraries\Foundation\Http\Middleware; use Illuminate\Contracts\Tra

    吉田さんは通すけど𠮷田さんは通さないミドルウェア - Qiita
  • 【Laravel】サービスコンテナ・サービスプロバイダ・ファサード・契約に関する補足資料 - Qiita

    はじめに Laravel の基礎部分となる非常に重要な4つの概念。基的にはマニュアルおよびその日語訳を参照すべし。 サービスコンテナ 6.x Laravel サービスプロバイダ 6.x Laravel ファサード 6.x Laravel 契約 6.x Laravel ここでは(個人的に)それらだけでは不足していると考えられる情報を補うことにする。 サービスコンテナをサービスプロバイダ以外から利用する方法 サービスプロバイダでは $this->app->make() を利用していたが, $this->app にアクセスできない場所では代わりに resolve() または app() というグローバル関数が利用できる。引数を渡す場合は両者とも全く同じ動きをする。

    【Laravel】サービスコンテナ・サービスプロバイダ・ファサード・契約に関する補足資料 - Qiita
  • [PHP] ハイフンなしの電話番号からハイフン付き電話番号を復元する - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在の電話番号形式にすべて対応している保証はありませんので,過去の記事として参考程度にご覧ください。 Rubyですでに実践されているコードがあったのでそちらを参考にさせていただきつつ少々工夫してみました。 http://qiita.com/kennyj@github/items/dde3880abb5071f649ab https://gist.github.com/kennyj/4966002 既にハイフンで誤って区切られていた場合も正しく修正されます。 一覧の中から見つからなかったときはそのまま $input を返します。 第2引数の $strict で携帯電話等の番号の区切り方が変わります。 $strict がFALSE(デフォルト)のとき 見慣れた慣用的な区切りになります。 090 - XXXX - YYYY 080

    [PHP] ハイフンなしの電話番号からハイフン付き電話番号を復元する - Qiita
  • Laravel に関する記事まとめ (8.x 対応作業中) - Qiita

    ✨がついているものは明示的に 6.x 対応確認済み 何もついていないものは,ほぼそのまま読めるはず 🔥がついているものはおそらく 8.x 対応必須 👀は再チェック(2021 作業用) ソースコードリーディング 【Laravel】サービスコンテナ・サービスプロバイダ・ファサード・契約に関する補足資料 ✨ 【Laravel】 Eloquent ソースコードリーディング 第1回 - モデルの取得 👀 第2回 - リレーションの取得 👀 【Laravel】 キュー・イベント・ブロードキャストに関する補足とフロントエンドへの導入 👀 【Laravel】 Redis Queue Worker のソースコードリーディング 👀 【Laravel】 認証や認可に関する補足資料 🔥 👀 【Laravel】 通知に関する補足と拡張の手引き 👀 レシピ・ノウハウなど データベース全般 【Lara

    Laravel に関する記事まとめ (8.x 対応作業中) - Qiita
    mimosafa
    mimosafa 2019/01/31
    使い方をチュートリ始めたばかりなのでまだ暗黒大陸な知識群。気になった時のために。
  • たぶんこれが一番分かりやすいと思います React + Redux のフロー図解 - Qiita

    【追記】 もうこれ古いから参考にしないでください https://t.co/mXtcc73Orf — もし Laravel が流行しなくなってこられてきてたとしたら、絶対に捨てられてこられてたと思うか (@mpyw) January 26, 2021 Redux にはその昔 connect()() とかいうクソ API と, Redux-Saga とかいう宗教がありました という考古学です — もし Laravel が流行しなくなってこられてきてたとしたら、絶対に捨てられてこられてたと思うか (@mpyw) January 26, 2021 読者対象 Tutorial: Intro To React - React Example: Todo List · Redux 「チュートリアルそれぞれ一周した!Reactは何とか理解できたが,Reduxがさっぱりわかんねぇ!」 ぐらいの人向け。自分

    たぶんこれが一番分かりやすいと思います React + Redux のフロー図解 - Qiita
  • 日付時刻関連のクラスを活用しよう - Qiita

    各クラスの基的な使い方 DateTimeZoneクラス タイムゾーンを定義するクラスです。このクラスは再度外部から能動的に__construct()をコールしない限りはイミュータブルが保証されます。 インスタンスの生成 サポートされるタイムゾーンのリストにある名称または+0900のような時差を表す文字列を第1引数としてコンストラクタに与えます。

    日付時刻関連のクラスを活用しよう - Qiita
  • filter_input_array_recursive - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。 これは何? filter_input_array 関数の惜しいところを使いやすく、安全にした強化版です。 フィルタリングされる変数名を多次元配列で定義できます。 cURLにおけるファイルアップロードに関する問題の解決策としてPHP公式が採用した葉要素にオプション専用のクラスを用意するという手段を真似て、任意のフィルタによる再帰的フィルタリングを可能にしました。(詳しくは 「PHPcURLのクソ仕様 "@" を回避する」 で紹介しています) filter_input_simple 関数との比較 filter_input_simple filter_input_array_recursive

    filter_input_array_recursive - Qiita
  • $_GET, $_POSTなどを受け取る際の処理 - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。 予備知識 PHPはフォームから送信された値などをコード実行開始に自動的に変数として使えるようにしてくれる非常に便利なプログラミング言語です.しかし,それをそのまま用いるとエラーが発生したり,脆弱性になってしまったりするケースがたくさんあります.使う前には適当なチェック処理が必要です. どういった変数が対象になるか 以下に挙げられた変数は,ユーザーが勝手に値や構造を書き換えたり,送信をそもそも行わずにアクセスしたりすることが可能な信用できない変数だと思ってください.例え,ラジオボタンで選択肢を限定していたり,隠し要素として埋め込んでいたりしたとしても,これに該当してしまいます.

    $_GET, $_POSTなどを受け取る際の処理 - Qiita
  • [PHP] まとめて例外をスローする小技 - Qiita

    Help us understand the problem. What is going on with this article?

    [PHP] まとめて例外をスローする小技 - Qiita
  • 「何故htmlspecialcharsを通すのか?」を一言でどうぞ - Qiita

    結論 Content-Type: text/plain な入力を Content-Type: text/html な環境の中に正しく出力させるため。 もう議論され尽くした内容だが、このような言い回しの人は見たことがなかったので敢えて記事にしてみる。 解説 ユーザがテキストボックスを通じて入力するのは text/plain、つまりただのテキスト。ただのテキストであるから装飾する機能は無い。 プログラマがユーザ入力を元にPHPで出力するのは text/html、つまりHTMLHTMLには見出しを示したり、太字にしたり、下線を引いたり、CSSJavaScriptを呼び出す機能もある。 htmlspecialchars は text/plain を text/html に変換する。< >を&lt; &gt;に変換するというのはあくまで一例に過ぎない、と考えるべきである。 通常、ユーザ入力は t

    「何故htmlspecialcharsを通すのか?」を一言でどうぞ - Qiita
  • PHPネイティブのDOMによるスクレイピング入門 - Qiita

    はじめに 淫夢要素はありません。 Simple HTML DOM Parser や Goutte の使い方は至る所で説明されていますが、PHPネイティブのDOMに関しての記事がかなり少ないので書いてみることにします。 ちなみに… Simple HTML DOM Parserは内部で何回も正規表現を使って全ての要素をパースするので、かなり遅いです。これ使うぐらいなら最初から自分で正規表現一で書いたほうがマシ。自分で正規表現を使って必要部分だけを抜き出す方法は、全ての方法の中で最も高速なので、正規表現が得意な人だったらこれでもいいと思います。 Goutteは内部でPHPネイティブのDOMを使ってます。PHPネイティブのDOMはDOMとして読ませる方法の中では最も高速なので良い方法をチョイスしていることになるのですが、そもそもGoutteに頼らなくてもそれなりに十分やっていけます。何より依存フ

    PHPネイティブのDOMによるスクレイピング入門 - Qiita
  • 【PHP入門講座】 ビット演算 - Qiita

    目次に戻る ビット演算は、PHPを扱う上に置いてはそれほど重要性は高くないのですが、次の「演算子」の説明で必要性が生じてくるので、ここであらかじめ触れておきます。 ビット演算の概要 導入 2進数演算を考えましょう。 【例】 $3 + 5 = 8$

    【PHP入門講座】 ビット演算 - Qiita
  • [PHP] そのプロパティ、privateに出来ませんか? - Qiita

    前書き 最初に言っておきます、オブジェクト指向をちゃんと理解している人は読む必要のない記事です。おぼろげにしか理解していない人のために、またつい最近までちゃんと理解していなかった自分へのメモのために書きます。 プロパティは全て private が当たり前だと思っている人は読まなくていいです。 プロパティは全て public が当たり前だと思っている人はもうちょっとクラスの継承・カプセル化について勉強してから読みに来てください。 2014/11/25 タイトル変更 コメント欄の@xipxさんの指摘、ならびにそれに対する私の回答を併せてご覧ください。 問題 外部からのアクセスに対してアクセス修飾子が持つ意味 「プロパティは全部 private が当たり前だ!」とは言いましたが、当然 「継承するときどうするの?」 って思いますよね。ここで例を示します。文字列のみをプロパティとして格納することを許

    [PHP] そのプロパティ、privateに出来ませんか? - Qiita
  • 【PHP入門講座】 型変換 - Qiita

    目次に戻る この内容は次の「演算子」に掲載したいところでしたが、あまりにも内容が膨大になるので専用の回を設けることにしました。 キャスト(型変換)演算子とは 変数や値の 頭 につけることで、指定された型に強制的に変換するものです。大文字小文字は区別されません。

    【PHP入門講座】 型変換 - Qiita
  • PHPにおける再帰処理の高速化 - Qiita

    鉄則: C言語レベルで再帰処理させろ! PHP言語レベルで再帰させるのとC言語レベルで再帰させるのでは、処理速度に雲泥の差がある。 圧倒的にC言語レベルの方が高速。 よく使う関数・クラス 以下の関数やクラスを使えば、配列の要素を辿っていく再帰処理であっても、 葉ノードだけを (PHP言語レベルでは) 単一のループ で処理させることが可能。 array_walk_recursive() http://php.net/manual/ja/function.array-walk-recursive.php 最速。 RecursiveIteratorIterator http://www.php.net/manual/ja/recursiveiteratoriterator.construct.php array_walk_recursive()より速度的には僅かに劣るが、こちらにしか出来ないこと

    PHPにおける再帰処理の高速化 - Qiita
  • ファイルシステム関数とシンボリックリンクの関係 - Qiita

    操作の安全性を保証したいときに取るべき手段 1. 適切な関数を用いて種類をチェックする ファイル ディレクトリ シンボリックリンク ネームドパイプ デバイススペシャルファイル UNIXドメインソケット

    ファイルシステム関数とシンボリックリンクの関係 - Qiita