ページビューの合計

ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2023年3月20日月曜日

Laragonとは

いわゆるLAMPの環境をWindows上で構築するのに手っ取り早いのでXAMPPを使っています。
特に不満はありません。
順調に版数も上がっているようですし 

たまたま会社のプログラマが"Laragon"というのを使っていたのでメモしておきます。

 
タイトルはともかくまとまっています。
 
 
Laragonは軽量でPHP以外にも対応しているようですね。
機会があれば使ってみたいと思います。
 

2023年2月24日金曜日

PHP8.2のリリース

PHPの8.2がリリースされたようです。

1年ぶりにリリースしたPHP 8.2──気になる新機能は? 型やクラス定義の強化ポイントも解説 

PHPの本家からダウンロードできます。

リリースノートによると2023年2月14日のリリースだったようです。

色んなデータ型のサポートなど機能追加がされていますね。


2023年2月22日水曜日

Laravel: フロントエンド

フロントエンド

  1. リクエストのライフサイクル
  2. 設定
  3. ディレクトリ構成
  4. フロントエンド
  5. サービスコンテナ
  6. ファサード

 

イントロダクション

Laravelは、ルーティング、バリデーション、キャッシュ, キュー, ファイルストレージなど、最新のウェブアプリケーション構築に必要となる全ての機能が提供されているバックエンド・フレームワークです。しかし、私たちはアプリケーションのフロントエンドを構築するための強力なアプローチを含む、美しいフルスタック体験を開発者に提供することも重要であると考えています。

Laravelでアプリケーションを構築する場合、フロントエンドの開発には主に2つの方法があります。どちらの方法を選択するかは、PHPを活用してフロントエンドを構築するか、VueやReactなどのJavaScriptフレームワークを使用するかにより決まります。以下では、こうした選択肢について説明し、あなたのアプリケーションに最適なフロントエンド開発のアプローチの情報を十分に得た上で、決定してもらえるようにします。

 PHPでの開発というとバックエンド側に目がいきがちですが、ここではフロントエンド側にフォーカスしているようです。

1.PHPを使う


以前、ほとんどのPHPアプリケーションでは、リクエスト時にデータベースから取得したデータを表示するため、PHPのecho文を散りばめた単純なHTMLテンプレートを使用し、ブラウザでHTMLをレンダしていました。
HTMLテンプレートにDBのデータをecho文で出力してる感じですね。
 
このHTML表示の手法を使う場合、LaravelではビューとBladeを使用して実現できます。Bladeは非常に軽量なテンプレート言語で、データの表示や反復処理などに便利な、短い構文を提供しています。

ビュー

ビューは、コントローラ/アプリケーションロジックをプレゼンテーションロジックから分離し、resources/viewsディレクトリに格納されます。
 
アプリケーションの主要な部分は、appディレクトリ内に格納されていますが、ビューだけは分離してresources/viewsディレクトリ内に保存するようです。
 
Blade
Laravelを使用する場合、ビューテンプレートは通常、Bladeテンプレート言語で記述します。単純なビューは以下のようになります。
<!-- View stored in resources/views/greeting.blade.php -->

<html>
    <body>
        <h1>Hello, {{ $name }}</h1>
    </body>
</html>
 
Bladeテンプレート言語を使うようです。
実質はHTMLファイルそのものです。その中に変数を直接埋め込む(echo文は使わず)ことができるようです。
 
Bladeはいわゆるテンプレートエンジンと呼ばれるものですね。せっかくなので調べてみました。
色んなサイトの説明を読んだのですがピンときませんね。
ここでいう機能やロジックというのは、MVCにおけるビジネスロジックのことですかね?
 
もしそうなら確かに分離していますが、それはテンプレートエンジンの機能というよりMVCモデルにおける役割の分離じゃないですかね?
画面表示で言えば、Mで取得したデータをVに渡して最終的にHTMLにレンダリングされるという流れです。
PHPの便利なツールで、機能を記述する部分と画面の表示部分を分割する事が出来ます。
テンプレートエンジンとは、「機能を記述する内容(PHP)」と「画面の表示内容(HTML&CSSなど)」を分けて管理できるツールです。HTMLの中に埋め込められるPHPは、初心者にも扱いやすいのが大きなメリットですが、PHPとHTMLが混在したファイルは、2つのルールが一緒に書かれているので読み取りにくいのが難点でした。修正を行う場合はページ数が多いほど膨大な時間がかかり、保守やメンテナンスが行き届きません。
そんな状況を回避するために、テンプレートエンジンは誕生しました。処理内容と表示内容を分けて作成できます。
PHPでは、HTMLページ内に<?php ?>タグで括る事によって、 HTML(デザイン部分)とプログラム(ロジック部分)を同一ページに記述できます。しかし、同じファイル内にデザイン部分とロジック部分を記述するとメンテナンスが非常に困難となります。
PHP では、Template Engineという技術によってデザイン部分とロジック部分を分離させメンテナンスを向上させることができるようになりました。
とてもシンプルなデータの埋め込み(変数を<h1>タグで囲って表示するだけ)ならいざ知らず、ループで一覧を表示したり、画面遷移やステータスによっては表示するものを変えたりロジックというか処理を書かないといけない気がします。
単純に
  • ビュー:結果表示だけ、デザイナーの担当
  • モデル(ビジネスロジック):プログラマーの担当
なんて分離できない気がするんですが?
とりあえず、スルーしておきます。
 
 マニュアルに戻って
この方法でアプリケーションを構築する場合、フォーム送信や他のページへの操作は、通常サーバから全く新しいHTMLドキュメントを受け取り、ページ全体をブラウザで再レンダします。現在でも多くのアプリケーションは、シンプルなBladeテンプレートを使い、この方法でフロントエンドを構築するのが、最も適していると思われます。
なるほど、昔ながらのHttpRequestに対してページ全体をブラウザ側で再描画するってことですね。
SPA(Single Page Application)とかも流行りらしいですが、まずはシンプルなWebアプリの作り方を学ぶことにします。



高まる期待

しかし、Webアプリケーションに対するユーザーの期待値が高まるにつれ、多くの開発者がよりダイナミックなフロントエンドを構築し、洗練した操作性を感じてもらう必要性を感じてきています。そのため、VueやReactといったJavaScriptフレームワークを用いた、アプリケーションのフロントエンド構築を選択する開発者もいます。

一方で、自分が使い慣れたバックエンド言語にこだわる人たちは、そのバックエンド言語を主に利用しながら、最新のWebアプリケーションUIの構築を可能にするソリューションを開発しました。たとえば、Rails のエコシステムでは、Turbo や[Hotwire]、Stimulus などのライブラリ作成が勢いづいています。

Laravelのエコシステムでは、主にPHPを使い、モダンでダイナミックなフロントエンドを作りたいというニーズから、Laravel LivewireとAlpine.jsが生まれました。


うーん、良く分からないです。
 
Laravelに慣れていない方は、ビューとBladeの基本的な使い方に、まず慣れることをお勧めします。その後、公式のLaravel Livewireドキュメントを参照し、インタラクティブなLivewireコンポーネントでアプリケーションを次のレベルに引き上げる方法を学んでください。
ということでまずは従来通りの開発の方法を学ぶことにします。

2.VueやReactを使う

LaravelやLivewireを使用してモダンなフロントエンドを構築することは可能ですが、多くの開発者はVueやReactなどのJavaScriptフレームワークのパワーを活用することをまだ好んでいます。このため、開発者はNPMを使い、利用可能なJavaScriptパッケージやツールの豊富なエコシステムを活用できます。
ふむふむ

しかし、LaravelとVueやReactを組み合わせるには、クライアントサイドのルーティング、データハイドレーション、認証など、様々な複雑な問題を解決する必要があり、追加のツールがなければLaravelを使うことはできません。クライアントサイドのルーティングは、NuxtやNextなど主義的なVue/Reactフレームワークを取り入れて簡素化されていることが多いですが、Laravelなどのバックエンドフレームワークとこれらのフレームワークを組み合わせる場合、データのハイドレートと認証で、複雑で面倒な問題が残ります。

さらに、開発者は2つの別々のコードリポジトリを管理することになり、しばしばメンテナンス、リリース、デプロイメントを両方のリポジトリにまたがって調整する必要が起きます。こうした問題は克服できないものではありませんが、アプリケーションを開発する上で、生産的で楽しい方法とは思えません。

うーん、めんどくさいですね。

Inertia

幸運にも、Laravelは両方の世界の最良を提供しています。Inertiaは、LaravelアプリケーションとモダンなVueまたはReactフロントエンドの間のギャップを埋めるもので、VueやReactを使って本格的でモダンなフロントエンドを構築しながら、ルーティング、データハイドレート、認証にLaravelルートとコントローラを活用できます。すべて単一のコードリポジトリ内で行えます。このアプローチではどちらのツールの能力も損なうことなく、LaravelとVue/Reactの両能力を享受することができます。

また新しい機能が出てきました。

アセットの結合

BladeとLivewire、Vue/ReactとInertiaのどちらを使用してフロントエンドを開発するにしても、アプリケーションのCSSをプロダクション用アセットへバンドルする必要があるでしょう。もちろん、VueやReactでアプリケーションのフロントエンドを構築することを選択した場合は、コンポーネントをブラウザ用JavaScriptアセットへバンドルする必要があります。

Laravelは、デフォルトでViteを利用してアセットをバンドルします。Viteは、ローカル開発において、ビルドが非常に速く、ほぼ瞬時のホットモジュール交換(HMR)を提供しています。

今度はViteですか、これも知らないですね。

とりあえずメモっておいて、後で時間があったらキャッチアップすることにします。

 

 

2023年2月8日水曜日

Laravelはじめ

Laravelについてのメモ

第1回目です。

自分用のメモなので他の人にとっては冗長だったりするかもしれませんが気にせずに進めていきます。

Laravelとは

PHPでWebアプリケーションを開発する際のフレームワークになります。

ランキングを探すとTop5の中の一位のようです。

第1位:Laravel
第2位:CakePHP
第3位:Symfony
第4位:Codelgniter
第5位:FuelPHP

この辺のトレンドは年々変わるのであまり気にしなくても良いでしょう。
上記はどれも一度は聞いたことがあるものですね。
ただ第4位のCodelgniterだけは日本ではあまり聞かないですね。本屋でも書籍を見た気がしません。
他の4つはバージョンを問わなければどれも本屋で書籍を見かけます。
あくまで私見ですがもともとCakePHPやFuelPHPなどが流行していて、最近Laravelの名前を良く聞くようになった気がします。
 
どのフレームワークもMVC(Model, View, Controller)モデルを採用しています。
最近だとMVVM(Model, View, ViewModel)というのもあるようですが、まずはMVCをマスターすることを優先することにします。 

Laravel公式サイト

この手のものを扱うにはまず公式サイトを参照するに限ります。
 
日本語
http://laravel.jp/

オンラインドキュメント:9.x
https://readouble.com/laravel/9.x/ja/

FBグループ日本語

Laravelの開発履歴

Wikipediaによれば
2011年6月にバージョン1がリリースされたそうです。12年前ですね。
バージョン4(2013年5月)ではコードがゼロベースから書き直され、当時スタンダードになりつつあったパッケージ管理システムのComposerを採用し、PHPの歴史のあるフレームワークであるSymfonyのコンポーネントを利用するなど、抜本的な変更が行われた。
とあります、この辺から今のLaravelの基礎ができたっぽいですね。 

Laravelの開発者

マイクロソフトの.NETの開発に関わっていたTaylor Otwell が開発し、Taylorを中心としたコミュニティーが活発な開発を続けている
だそうです。
またLaravelという名前は「 ナルニア国物語に登場するナルニア国の王都、ケア・パラベルにちなむ」らしいです。
以下TwitterでLaravelという名前は魔法少女ララベルから来ているのかという(日本人からの)質問に対してTaylorさんが答えています。
 

PHPとは

今更ですがPHPとは”PHP: Hypertext Preprocessor”という再帰的に略したものだそうです。
再帰的に略したもの:PHP自体が名前の中に入っていて略語に含まれている。
PHP: Hypertext Preprocessor
 
現在の最新版は8.2.2のようです。

公式ドキュメント:https://www.php.net/manual/ja/index.php
日本語化されています。助かりますね。

PHPの歴史

結構昔からある開発言語のイメージです。

現在 PHP として知られているものは、かつて PHP/FI と呼ばれていたソフトウェアの後継です。 1994 年に Rasmus Lerdorf が生み出したいちばん最初の PHP はシンプルな CGI バイナリ群で、C 言語で書かれていました。

だそうです。29年も前になりますね。

当然もう当時とは全く違うものになっているでしょうがこれだけ続いているのがすごいことです。


Laravel再学習

フロントエンド系の方に興味が行っていましたがまたバックエンド系に戻ってきました。 Laravelです。 かなり忘れてます、自分のブログを見ながらもう一度です。 今回はMVCパターン、そして Eloquentを使えるようになるのが目的です。 まずはプロジェクト作成から 1. Com...