タグ

phpに関するnilabのブックマーク (200)

  • Laravelのログファイル分割 - ハマログ

    Laravelのログは、デフォルトでstorage/logs/laravel.logに出力されます。 コマンドの実行ログもウェブアプリの実行ログもすべて同じファイルに出力されます。 config/app.phpの以下の設定で、日付単位の出力や出力ログレベルの指定ができます。 // ログ種別。単一(single)、日別(daily)、システムログ(syslog)、エラーログ(errorlog) 'log' => env('APP_LOG', 'daily'), // dailyの場合、ログを保有する日数 'log_max_files' => '90', // ログレベル 'log_level' => env('LOG_LEVEL', 'info'), 今回、コマンドのログを別のファイルに出力したかったのですが、フレームワークが標準で対応していないためやりかたを考えました。 まず、コマンドのデ

    Laravelのログファイル分割 - ハマログ
    nilab
    nilab 2018/09/19
    「LaravelのログはMonologのラッパーなので、ライブラリをインストールをしなくてもそのまま利用することができます」
  • Laravel Recipes日本語版 | Bladeテンプレートで変数を表示する

    nilab
    nilab 2018/08/21
    {{ $name }} {{{ $name }}} 「Bladeテンプレートで中括弧2つで echo を意味します」「出力する値をエスケープしたい場合に、中括弧2つの代わりに中括弧3つを利用します(中略)webページに表示される前にhtmlentities()を介します」
  • 外人のSEから見るFuelPHP【第一印象】 - Qiita

    なんでこんな記事を書いた? 新しいプロジェクトを作るときにどのフレームワークを使おうかっていう話になって、初めてFuelPHPという名を聞きました。有名なフレームワークのリストの中に、なんでFuelPHPの名前が出てくるんだろうと思って詳しく調べてみました。そして驚きました。 1. セキュリティーフィックスすらもらってないPHPバージョンを奨励する。 これはびっくりすることです。 今頃5.5にいるプロジェクトが急いでアップグレードしてる間に、FuelPHPはフロントページに5.3をサポートすると書いています。 もちろん5.3以上で使えますが、PHPのコアチームから放置されているバージョンをサポートしています。 ディストリビューションにサポートされてない限り5.3と5.4は危険です。そして3ヶ月後には5.5もEnd of Lifeになります。 2. サポート?バグフィックス?進化? バグフィ

    外人のSEから見るFuelPHP【第一印象】 - Qiita
    nilab
    nilab 2018/01/30
    「日本でしか流行らない」「CakePHPが最近下がってきています。Symfonyはずっと安定してますね。Laravelが上げていく一方的です。FuelPHPはゼロと共に歩きます。そして毎日もっと近づいています」
  • データベース:シーディング 5.5 Laravel

    イントロダクション シーダ(初期値設定)クラスを使用し、テストデーターをデーターベースに設定するシンプルな方法もLaravelには備わっています。全シーダクラスはdatabase/seedsに保存します。シーダクラスには好きな名前を付けられます。しかしUsersTableSeederなどのような分かりやすい規則に従ったほうが良いでしょう。デフォルトとしてDatabaseSeederクラスが定義されています。このクラスからcallメソッドを使い他の初期値設定クラスを呼び出すことで、シーディングの順番をコントロールできます。 シーダクラス定義 シーダーを生成するには、make:seeder Artisanコマンドを実行します。フレームワークが生成するシーダーは全てdatabase/seedsディレクトリに設置されます。 php artisan make:seeder UsersTableSee

    nilab
    nilab 2018/01/18
    Seeder「php artisan make:seeder UsersTableSeeder」「Laravelのインストール時にデフォルトで用意されているDatabaseSeederクラスを変更してみましょう。runメソッドにデータベースINSERT文を追加します」
  • データベース:マイグレーション 5.5 Laravel

    イントロダクション マイグレーションとはデータベースのバージョンコントロールのような機能です。アプリケーションデータベースのスキーマの更新をチームで簡単に共有できるようにしてくれます。マイグレーションは基的にLaravelのスキーマビルダとペアで使い、アプリケーションのデータベーススキーマの作成を楽にしてくれます。もしあなたが今まで、チームメイトに彼らのローカルデータベーススキーマに手作業でカラムを追加するよう依頼したことがあるなら、データベースマイグレーションは、そうした問題を解決してくれます。 LaravelのSchemaファサードは、テーブルの作成や操作をサポートしてるデータベースシステム全部に対しサポートします。 マイグレーション生成 make:migration Artisanコマンドを使いマイグレーションを生成できます。 php artisan make:migration

    nilab
    nilab 2018/01/18
    Migration「php artisan make:migration create_users_table」「upメソッドは新しいテーブル、カラム、インデックスをデータベースに追加するために使用し、一方のdownメソッドはupメソッドが行った操作を元に戻します」
  • Eloquent:利用の開始 5.4 Laravel

    イントロダクション Eloquent ORMLaravelに含まれている、美しくシンプルなアクティブレコードによるデーター操作の実装です。それぞれのデータベーステーブルは関連する「モデル」と結びついています。モデルによりテーブル中のデータをクエリできますし、さらに新しいレコードを追加することもできます。 使いはじめる前に確実にconfig/database.phpを設定してください。データベースの詳細はドキュメントで確認してください。 モデル定義 利用を開始するには、まずEloquentモデルを作成しましょう。通常モデルはappディレクトリ下に置きますが、composer.jsonファイルでオートロードするように指定した場所であれば、どこでも自由に設置できます。全てのEloquentモデルは、Illuminate\Database\Eloquent\Modelを拡張する必要があります。

    nilab
    nilab 2018/01/17
    「クラス名を複数形の「スネークケース」にしたものが、テーブル名として使用されます」
  • 何故EloquentModelはクラス名を複数形にしたテーブルを自動で見に行けるのか - Qiita

    EloquentはModelクラス使ってる https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model.php テーブル名取得 その中を追うと、テーブル名の取得にはgetTable()を使ってることが分かる。 <?php abstract class Model { // 省略 /** * Get the table associated with the model. * * @return string */ public function getTable() { if (isset($this->table)) { return $this->table; } return str_replace('\\', '', Str::snake(Str::plural(class

    何故EloquentModelはクラス名を複数形にしたテーブルを自動で見に行けるのか - Qiita
    nilab
    nilab 2018/01/17
    「Str::snake()は MyPostsという文字列をmy_postsってな感じに変換」「Str::plural()は英単語の複数形を取得する」「Modelがよしなにテーブルを読み込んできてくれるのは、「ベタな単語の照合表」や「正規表現」によって実現」
  • データベース:クエリビルダ 5.4 Laravel

    イントロダクション データベースクエリビルダはスラスラと書ける(fluent)便利なインターフェイスで、クエリを作成し実行するために使用します。アプリケーションで行われるほとんどのデーターベース操作が可能で、サポートしている全データベースシステムに対し使用できます。 LaravelクエリビルダはアプリケーションをSQLインジェクション攻撃から守るために、PDOパラメーターによるバインディングを使用します。バインドする文字列をクリーンにしてから渡す必要はありません。 結果の取得 全レコードの取得 クエリを書くにはDBファサードのtableメソッドを使います。tableメソッドは指定したテーブルに対するクエリビルダインスタンスを返します。これを使いクエリに制約を加え、最終的な結果を取得するチェーンを繋げます。次に、最終的な結果をgetで取得します。 <?php namespace App\Ht

    nilab
    nilab 2018/01/17
    「SQLインジェクション攻撃から守るために、PDOパラメーターによるバインディングを使用します。バインドする文字列をクリーンにしてから渡す必要はありません」「DB::table('users')->where('name', 'John')->first();」
  • データベース:利用開始 5.4 Laravel

    イントロダクション LaravelSQLを直接使用する場合でも、FluentクエリビルダやEloquent ORMを使う時でも、データベースの取り扱いをとても簡単にしてくれます。現在、Laravelは以下のデータベースシステムを使用しています。 設定 データベース設定ファイルはconfig/database.phpです。このファイルで使用するデータベース接続を全部定義すると同時に、デフォルトで使用する接続も指定してください。サポートしているほとんどのデータベースシステムの例がファイルの中に用意しています。 デフォルトでLaravelのサンプル環境設定は、ローカルマシン上でLaravelでの開発を行うのに便利な仮想マシンであるLaravel Homestead用に設定してあります。もちろん、ローカルのデータベースに合わせるため、自由に変更してくだい。 SQLite設定 touch data

    nilab
    nilab 2018/01/17
    「データベース設定ファイルはconfig/database.phpです。このファイルで使用するデータベース接続を全部定義すると同時に、デフォルトで使用する接続も指定してください」「DB::select('select * from users where active = ?', [1]);」
  • バリデーション 5.3 Laravel

    nilab
    nilab 2018/01/16
    「バリデーションに適合するとそのまま続けてコードが実行されます。しかし、バリデーションに失敗すると例外が投げられ、適当なエラーレスポンスが自動的にユーザに送り返されます」
  • ミドルウェア 5.3 Laravel

    nilab
    nilab 2018/01/16
    グローバルミドルウェア「あるミドルウェアをアプリケーションの全HTTPリクエストで実行したい場合は、app/Http/Kernel.phpクラスの$middlewareプロパティへ追加してください」
  • 【laravel】view composerでviewロジックを分離する - Qiita

    web開発を行っていると、MVCなどのアーキテクチャ構成はとても悩ましいところです。 私がいつも思うのは ビューロジックはできればコントローラーに書きたくないし、 テンプレートもできるだけロジックを入れず、 綺麗なhtmlのままでありたい。 実際の処理とビューのロジックが混ざってわかりづらくなってしまいますからね。 そういった問題を解決する手段として、 世の中にはプレゼンターを用意するとか、jsフレームワークを利用するとか様々なものが存在してます。 今回はlaravelに標準で搭載されているview composerの機能を紹介したいと思います。 view composerの振る舞い view composerはいわばプレゼンターやビューモデルのような振る舞いをします。 それぞれのテンプレートに値を紐付けることができます。 仕組み自体はただこれだけなので、簡単に利用することができます。 使

    【laravel】view composerでviewロジックを分離する - Qiita
    nilab
    nilab 2018/01/16
    「view composer用のサービスプロパイダーを作成し、view composerを登録」
  • Bladeテンプレート 5.4 Laravel

    nilab
    nilab 2018/01/16
    「繰り返し中は、$loop変数が使用できます。この変数により、現在のループインデックスや繰り返しの最初/最後なのかなど、便利な情報にアクセスできます」
  • CSRF保護 5.5 Laravel

    イントロダクション Laravelでは、クロス・サイト・リクエスト・フォージェリ(CSRF)からアプリケーションを簡単に守れます。クロス・サイト・リクエスト・フォージェリは悪意のあるエクスプロイトの一種であり、信頼できるユーザーになり代わり、認められていないコマンドを実行します。 Laravelは、アプリケーションにより管理されているアクティブなユーザーの各セッションごとに、CSRF「トークン」を自動的に生成しています。このトークンを認証済みのユーザーが、実装にアプリケーションに対してリクエストを送信しているのかを確認するために利用します。 アプリケーションでHTMLフォームを定義する場合はいつでも、隠しCSRFトークンフィールドをフォームに埋め込み、CSRF保護ミドルウェアがリクエストの有効性をチェックできるようにしなければなりません。トークン隠しフィールドを生成するには、csrf_fi

    nilab
    nilab 2018/01/16
    csrf_field ヘルパ関数を使う。「HTMLフォームを定義する場合はいつでも、隠しCSRFトークンフィールドをフォームに埋め込み、CSRF保護ミドルウェアがリクエストの有効性をチェックできるようにしなければなりません」
  • Composerのcreate-projectが何をやっているのか調べてみた - Qiita

    フレームワークの新規プロジェクトを作成するときに、composer create-projectを叩くのがお作法っぽいのですが、裏側で何がどうなっているのか見えなくて気持ち悪かったので調べてみました。 結論 対象パッケージをgit cloneしてからcomposer intsallするのとほぼ同じである。

    Composerのcreate-projectが何をやっているのか調べてみた - Qiita
    nilab
    nilab 2018/01/16
    「「create-projectはgit cloneしてcomposer installするのと同じである」と公式ドキュメントに書かれていた」
  • エラーとログ 5.5 Laravel

    イントロダクション 新しいLaravelプロジェクトを開始する時点で、エラーと例外の処理は既に設定済みです。App\Exceptions\Handlerクラスはアプリケーションで発生する全例外をログし、ユーザーへ表示するためのクラスです。このドキュメントでは、このクラスの詳細を確認していきます。 パワフルで様々なログハンドラをサポートしているMonologLaravelはログに利用しています。単一ログファイルへのログ、一定期間ごとのログファイル切り替え、システムログへのエラー情報の書き込みを選べるように、Laravelはハンドラをあらかじめ準備しています。 設定 エラー詳細 アプリケーションエラー発生時にユーザーに対し表示する詳細の表示量は、config/app.php設定ファイルのdebug設定オプションで決定します。デフォルト状態でこの設定オプションは、.envファイルで指定されるA

    nilab
    nilab 2017/12/28
    「パワフルで様々なログハンドラをサポートしているMonologをLaravelはログに利用しています。単一ログファイルへのログ、一定期間ごとのログファイル切り替え、システムログへのエラー情報の書き込みを選べる」
  • phpdotenvで環境変数を制御する - Qiita

    phpdotenvとは phpdotenv(PHP dotenv)は、.envファイルに環境変数を記述することで、getenv()、$_ENV、$_SERVERからの環境変数呼び出しを.envファイルから取得することができる Rubyのdotenvライブラリがベース 特徴 PHPで使う環境変数をDocumentRoot配下でまとめて管理することができる Twelve Factor App::設定 「Twelve-Factor Appは設定を 環境変数 に格納する」 ApacheやnginxなどVirtualHost内で環境変数を設定する必要がなくなる 設定済みの環境変数を上書きするかどうか制御が可能(デフォルトは上書き不可) インストール方法 composerでインストールする

    phpdotenvで環境変数を制御する - Qiita
    nilab
    nilab 2017/12/19
    「.envファイルに環境変数を記述することで、getenv()、$_ENV、$_SERVERからの環境変数呼び出しを.envファイルから取得することができる」「Rubyのdotenvライブラリがベース」
  • PSR-7 Support in Symfony is Here (Symfony Blog)

    Less than 2 weeks ago, the PHP community roundly accepted PSR-7, giving PHP a common set of HTTP Message Interfaces. This has huge potential for interoperability and standardization across all of PHP. This is especially true for middleware: functions that hook into the request-response process. In the future, a middleware written around these new interfaces could be used in any framework. Introduc

    PSR-7 Support in Symfony is Here (Symfony Blog)
    nilab
    nilab 2017/12/19
    PSR-7 Support in Symfony is Here (Symfony Blog)
  • psr/http-message - Packagist

    nilab
    nilab 2017/12/19
    psr/http-message - Packagist
  • PSR-7: HTTP message interfaces - PHP-FIG

    1 Host header value prior to operation. 2 Host component of the URI composed in the request prior to the operation. 3 Host component of the URI being injected via withUri(). 1.3 Streams¶ HTTP messages consist of a start-line, headers, and a body. The body of an HTTP message can be very small or extremely large. Attempting to represent the body of a message as a string can easily consume more memor

    PSR-7: HTTP message interfaces - PHP-FIG
    nilab
    nilab 2017/12/19
    PSR-7: HTTP message interfaces - PHP-FIG