タグ

phpに関するlost_and_foundのブックマーク (61)

  • LaravelのMiddlewareはどのように動いているのか?

    はじめに こちらの記事の続編で Laravel Breeze の Remember me 編を書こうとしていました。 その際にソースを追っかけていたのですが、Remember me について解説するためには、auth ミドルウェアを見る必要がありました。 そして、Middleware 見るためには Laravel の呼び出しライフサイクルから見ていく必要があったのですが、結果として Remember me よりも複雑でしたので別記事として公開することにしました。 なので、Remember me 編に入るまでにこちらの記事を読んでおくと、スムーズかと思います。 また内容が Laravel のコアな部分についてなので、つよつよ Laraveler 達に 「クソ記事」「こんな程度で技術記事書いてるとか」 みたいに叩かれそうで怯えながら公開したのですが、Twitter でびっくりするくらい沢山の良

    LaravelのMiddlewareはどのように動いているのか?
  • 【PHP8.1】PHP8.1の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2021/11/26にリリースされました 2021/07/20、PHP8.1がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2021/11/25にPHP8.1.0がリリースされる予定です。 というわけでPHP8.1で実装されるRFCを見てみましょう。 RFC Fibers 賛成50反対14で受理。 Fiberです。 PHPで非同期コードを書けるようになります。 $fiber = new Fiber(function (): void { $value = Fiber::suspend('fiber'); echo "レジュームした。$value: ", $value, "\n"; }); $value = $fiber

    【PHP8.1】PHP8.1の新機能 - Qiita
  • 5年間 Laravel を使って辿り着いた,全然頑張らない「なんちゃってクリーンアーキテクチャ」という落としどころ

    この記事は Laravel Advent Calendar 2020 - Qiita 最終日の記事です。 TL;DR DDD や "真の" クリーンアーキテクチャは, Web 業界における大抵の現場ではオーバースペックだし,導入しても全員がついてこれるとは限らない app/UseCases ディレクトリだけ切って,ドメインごとに単一責務なクラスを置くと使いやすいよ ActiveRecord 指向のフレームワークで Repository パターンを無理に導入すると死ぬので, UseCase で Eloquent Model の機能を使うことを恐れるな はじめに Zenn では初投稿です。日Laravel コミュニティではもうお馴染みのようで実はあまり顔を出していない(?) @mpyw と申します。オンラインサロンの火付け役となった Synapse が最初の仕事でしたが,就職後すぐ会社が

    5年間 Laravel を使って辿り着いた,全然頑張らない「なんちゃってクリーンアーキテクチャ」という落としどころ
  • PHP 高速化に関するメモ書き | Thought is free

    ※ isset や empty は関数ではなく言語構造なので速いです。 上記は、あくまで Null のチェックであって、 "" や false や 未定義変数 などをチェックする場合は、 それぞれ返ってくる値も異なるので注意。 インクリメントとデクリメント $i++ より ++$i $i-- より --$i の方が速い。 count() とか strlen() とか 配列の要素数を数えたりするために count() 文字列の長さを調べるために strlen() を使ったりするのだが、 ぶっちゃけ、配列の要素数が 0 か否か、文字列の長さが 0 か否か っていう判断をするだけなら、 if( count( $array ) === 0 ) { ~ } if( !strlen( $string ) ) { ~ } のような書き方するよりも、 empty で判断した方が速い。 なぜなら、empty

    PHP 高速化に関するメモ書き | Thought is free
  • PHP: normalizer_normalize を使って Unicode 正規化を行う

    normalizer_normalize を使って Unicode 正規化を行うtransliterator_transliterate を使って Unicode エスケープシーケンスを文字に変換するPHP: Collator を使って文字列の照合を行うPHP: IntlBreakIterator を使って文字数を求めるPHP: IntlBreakIterator を使って1文字単位でコールバックを適用する関数を定義するPHP: IntlCodePointBreakIterator を使ってコードポイントを求めるPHP: ResourceBundle を使って複数のロケールのメッセージを管理する2014年7月20日追記:「濁点」が「半濁点」に誤表記されていたのを修正しました。 2013年6月20日追記:Unicode 正規化によって全角記号が ASCII に変換されることで生み出される脆弱

    PHP: normalizer_normalize を使って Unicode 正規化を行う
  • 新人プログラマがPHPを学ぶべき理由 - Qiita

    PHPは優れた言語だ! それも、他の言語の追従を許さない程に優れている言語なのである!! 私がそう考えている理由についてお伝え出来ればと思って、この記事を書く事にした。 無限に雇用を生み続ける魔法 かつて、C++が複雑怪奇な言語仕様を内在させる事によって開発期間を長期化させ、労働者たちの安定雇用を創出した。 PHPは雇用創出に対してのもう一つの答えを提示してくれたのである。 定期的なアップデート、それも後方互換が無いアップデートによって仕事を創出し続けているのである!! もちろん、アップデート以外にも雇用創出する為の工夫が随所に施されているので、その紹介もしていきたいと思う。 素晴らしき雇用創出の方法 貧弱な構文 バージョンアップによって構文は少しずつ改善されている。 言語が出来てから20年経過し、ついに定数に配列が使えるようになったのだ!! そう、2015年以前のPHPでは定数に配列を使

    新人プログラマがPHPを学ぶべき理由 - Qiita
  • PHPを高速に動かす書き方 | utututizu

    PHPのプログラムを高速に処理をさせる書き方を紹介します。 1回1回の処理に人が知覚出来る程の差はないですが、ループの中や実行回数が多い処理では塵も積もれば山になります。 同じ処理を書くのでも、初期の実装から処理時間を意識する事で後に続く負荷テストや改修作業をずいぶん楽にしてくれます。 知ってさえいれば手間がかかる内容ではないので、是非参考にしてみてください。 インクリメント、デクリメントは後ろではなく前に 一般的に書籍でよく見るのは後ろですが、前に付けた方が高速に動きます。 for文などループでよく使うので、じわじわと効いてきます。 // 遅い例 for ( $i = 0; $i < 10000; $i++ ) { ... } for ( $i = 0; $i < 10000; $i-- ) { ... } // 速い例 for ( $i = 0; $i < 10000; ++$i )

    PHPを高速に動かす書き方 | utututizu
  • PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016

    2016/11/03 @ PHPカンファレンス2016 2016/12/15 @ PHPカンファレンス2016再演イベントにて改訂 2017/06/10 @ PHPカンファレンス福岡2017にて改訂 2017/06/10 @ PHPカンファレンス福岡2017講演録画 https://www.…

    PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
  • モダンPHPアンチパターン - Qiita

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

    モダンPHPアンチパターン - Qiita
  • 今までのPHPのやり方を全て打ち捨てよう - 絵描いたりコード書いたりする奴の独白

    PHPは日々進化している 最重要な言語仕様の変更点 PHP 5.3.x 名前空間 レイトスタティックバインディング クロージャ PHP 5.4.x trait ビルドインサーバ クロージャで$this PHP 5.5.x ジェネレーター Composer PHPにとってのBundler PEARの環境依存やめよう PECL?知らん PSR-4 includeやrequireをもう使う必要はない PSR-4の規約にそって名前空間とディレクトリを掘ろう そしてcomposer.jsonにちょいちょいと { "autoload": { "psr-4": { "mynamespace\\": "src/" } } } そしてbootstrapに相当するphpスクリプトに require_once 'vendor/autoload.php'; これだけで後はuseをjavaのimportに相当するも

    今までのPHPのやり方を全て打ち捨てよう - 絵描いたりコード書いたりする奴の独白
  • Laravel - The PHP Framework For Web Artisans

    Nightwatch Coming Soon Monitoring, logs, and insights

    Laravel - The PHP Framework For Web Artisans
  • 気づけばプロ並みPHP 副読本:お助け電子BOOKへの寄稿の顛末

    谷藤賢一さんの著書『気づけばプロ並みPHP~ショッピングカート作りにチャレンジ! 』に、発売1周年の謝恩キャンペーンとして『副読:お助け電子BOOK』が公開されました(*1)。私はこの副読の中で、『第2章 【徳丸 浩氏 スペシャル寄稿】安全なWebアプリケーションのために』を寄稿しています。このエントリでは、寄稿の顛末を報告したいと思います。 動機 私が書『気づけばプロ並みPHP』を購入したのは昨年の10月29日ですから、書が出版されてまもなく、今から約1年前です。私は書を一読して、セキュリティ上の多数の問題があることに気がつきました。 以前は、セキュリティ上の問題が多い書評をブログ記事として書くことも多かったのですが、この際は書評という形にするのはためらいがありました。その理由は以下の様なものです。 私のブログの読者層はセキュリティに関心の高い方たちであり、書の読者とは重

  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

    lost_and_found
    lost_and_found 2014/03/04
    覚えておこう
  • <?phpタグが無くなる日 〜PHPの開発プロセス〜

    PHPスクリプトを記述する際に使われる<?phpタグの利用をオプションで有効無効を切り替えるようにするという仕様がPHPの開発コミュニティでの議論に挙がっています。 この仕様変更が実装された場合、PHPスクリプトには必ず<?phpのタグがあるという前提条件が変わる事になります。 まずこの議論がどのような形で行われているのでしょうか?ご存知でない方もいるかと思いますが、PHPの文法や機能へどのような変更を加えたいか、という議論はRFC (Request For Comment)という形でパブリックに行われています。Wikiページに仕様や背景、実際のパッチなどを添付し、開発者やユーザーからの投票を行った結果を元に実際にPHP体への変更を行うかどうかが決定されています。 過去に実装された機能の際の例などと一緒に見てみましょう。 Array Short Syntax # 従来の記述の場合 $a

    <?phpタグが無くなる日 〜PHPの開発プロセス〜
  • コードをまとめる技術としてのイテレータとジェネレータ - Qiita

    (p. 27) 端的に言えば「同じことを二度書いてはいけない」ということですね。この原則を当てはめなくてもいい例外のパターンもいくつかあるのですが。。 コードにおいて「同じことを二度書いてはいけない」を忠実に守ろうとすると、同じコードを何度も書きたくなったら、何らかの方法でそのコードをまとめる必要があります。 サブルーチン / 関数 サブルーチン化/関数化はコードをまとめる技術として最も基的なものです。 例えば、libcurlで3つのURLに存在するHTMLを取得するコードを書いてみます。 <?php $ch1 = curl_init('http://www.yahoo.co.jp/'); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); $responseHtml1 = curl_exec($ch1); curl_close($ch1);

    コードをまとめる技術としてのイテレータとジェネレータ - Qiita
  • Blog

    Paul Bissonette Project Update and OSS Support Changes Posted October 27, 2023 Hi everyone 👋 It’s been a while since our last update here, and a lot has changed in the last year. The Hack and HHVM teams have been busy working on a wide array of improvements to both the language and the runtime, this year we’ve already landed over 2.5k commits. A lot has changed for us in the last year - our teams

    Blog
  • 各言語におけるtrue/falseまとめ - 昼メシ物語

    たとえば PHP で、 if ($hoge) { ... } とか書いてあったら、 $hoge がどんな値のときに if の中身が実行されるのか即答できますか。 こういう書き方は多くの言語で可能ですが、言語によって何が真で何が偽になるのかが異なるので、それぞれまとめてみました。 C言語 C言語には bool 型が無い。 0 (int) だけが偽となり、それ以外はすべて真となる。 NULL 定数は stddef.h で以下のように ((void*)0) と定義されているため、偽値として使える。 意見が分かれそうなところですが、個人的にはNULLを偽値として使用するは好きじゃないです。 #ifndef __cplsuplus #define NULL ((void*)0) #else #define NULL __null #endif C++ C++になると bool 型が出てくる。C と同

    各言語におけるtrue/falseまとめ - 昼メシ物語
  • PHP: 言明 - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    PHP: 言明 - Manual
    lost_and_found
    lost_and_found 2013/11/14
    いつも覚えられない
  • PHPのドキュメンテーションツールはApiGenがいい感じなんじゃないか

    GitHubのスターの数はphpDocumentor2が一番多い。PEARのAPI docでも使われているphpDocumentorの後継ツールだ。しかし、以前試した時には、Page level docを要求しておきながら、どこに書いてもエラーになったりと、中々安定しない印象だった。生成速度はv1と比べてだいぶ速い。 phpDoxはTemplate for Jenkins Jobs for PHP Projectsでも採用されているツールだ。ファイル判定がFILEINFO_MIMEのため、.phpのファイルであってもC++のファイルだと勘違いされることが多々あった。この部分だけ修正すれば使えないこともないが、@inheritdocに対応していないので、eclipseでPDTを使っている自分としてはあまりメリットがない。さらにPackagistに登録されていないため、composer ins

    PHPのドキュメンテーションツールはApiGenがいい感じなんじゃないか
  • Sculpin — PHP Static Site Generator

    PHP Static Site Generator Sculpin is a static site generator written in PHP. It converts Markdown files, Twig templates and standard HTML into a static HTML site that can be easily deployed. Why Sculpin? PHP 7 static site generator. Fast and easy to get started. If your language of choice is PHP, you'll feel right at home if you need to extend Sculpin. Composer-based installation. Forget about man

    lost_and_found
    lost_and_found 2013/10/08
    静的サイト生成