- 0.1. 【Laravel】フォームリクエストでバリデーションする
- 0.2. 【意見募集】新発想?のフォームのセキュリティについて
- 0.3. PHPで厳密な型チェック「declare」
- 0.4. Laravelで入力値エラーチェック(validate)を実装する
- 0.5. PHPで初めてのWebアプリケーション開発 Bladeで画面表示 備忘録5
- 0.6. Composerをローカルに落とす方法
- 0.7. よく使うヘルパ関数まとめ
- 0.8. 【PHP8.0】なんでもあり型が書けるようになる
- 0.9. 【2020年度版】EC-CUBE の開発環境の作り方
- 0.10. PHPでWEBサイトの変更を検知してLINEに通知する
- 1. 記事一覧
【Laravel】フォームリクエストでバリデーションする
##`やりたいこと`##
– バリデーションする
– フォームリクエストを使い汎用性をあげる##`前提`##
データベースは作成済み
モデルは作成済み
##`進め方`##
– フォームリクエストを作成する
– コントローラーを作成する
– viewを作成する
– ルートを設定するフォームリクエストを作成する
–
コマンドプロンプトで作成するプロジェクトのディレクトリに移動してから“`php
$ php artisan make:request TestRequest
“`
今回はTestRequestという名前のフォームリクエストクラスを作成。
※クラス名はキャメルケースにする。“`php:TestRequest.php
【意見募集】新発想?のフォームのセキュリティについて
Twitterのフォロワーさんと話していて、既にありそうだけど、もしかしたら使えるかもしれないフォームのセキュリティを見つけたので書いておきます。
例えば一般的なログインフォームはこんな感じですね?
“`php:index.php
EOM;
}else{
echo <<< EOM
PHPで厳密な型チェック「declare」
## declareとは
declareとは、実行エンジンに対して、スクリプトの処理方法を指示するための仕組みです。
## 例
$priceに文字列を代入します。型宣言で引数・戻り値にintを指定しています。
“`php
$price = ‘100’; //文字列を代入
print calc_tax($price);
function calc_tax(int $price): int {
return $price * 0.08;
}
“`結果は8が返ってきます。文字列が代入されているので、厳密にチェックしたい場合にdeclareを指定します。
“`php
declare(strict_types=1);$price = ‘100’; //文字列を代入
print calc_tax($price);
function calc_tax(int $price): int {
return $price * 0.08;
}
“`“Fatal error: Uncaught TypeError: Argument 1 passed to c
Laravelで入力値エラーチェック(validate)を実装する
# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています# エラーチェッククラスの作成
(1) コマンドラインで
`cd sample`
`php artisan make:rule SampleRule`
xdebugの設定をしているとeclipseが実行していいですかというプロンプトを出すのでOKを押します
eclipseプロジェクトを右クリック→リフレッシュ
/sample/app/Rules/SampleRule.phpが現れます(2) /sample/app/Rules/SampleRule.phpに変数を追加し、コンストラクタ、passesメソッド、messageメソッドを修正します
“`SampleRule.php
PHPで初めてのWebアプリケーション開発 Bladeで画面表示 備忘録5
#前提
PHPを使ったWebアプリケーションの開発知識が必要になったので、開発過程の備忘録、知識のインプット・アウトプットを目的としている。###環境
macOS Catalina 10.15.3
Laravel 7.10.3
PHP 7.3.11#備忘録5 目次
HTML/CSSで作成した画面をBladeを使って表示
– Bladeを使ってテンプレートを作る
– コントローラーの作成
– 表示#HTML/CSSで作成した画面をBlade構文を使って表示
###Bladeを使ってテンプレートを作る
Laravelには標準で独自のテンプレートエンジン「Blade」なるものが搭載されている。Bladeに関して詳しく載っているサイト→[「Laravel 7.x Bladeテンプレート」](https://readouble.com/laravel/7.x/ja/blade.html)
今回はBladeの効率的にレイアウトを作成する機能を使って、テンプレートを作成する。
ディレクトリ resources/views/layouts/nanaita.blade.php“`
Composerをローカルに落とす方法
Composerを使いたいディレクトリに移動して以下を実行します。
“`
# binファイルを作成
mkdir bin# composer-setup.phpをインストール
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”# binディレクトリの中に、composerファイルを作成
php composer-setup.php –install-d
よく使うヘルパ関数まとめ
##ヘルパ関数とは
ヘルパ関数とは、PHPとは別でLaravelが用意している便利な関数たちです:blush:##よく使うヘルパ関数
####1. dd()
PHPでいうvar dump()。
指定された変数の内容を表示し、スクリプトの実行を停止する。“`php
dd($value);
“`####2. auth()
ログイン情報の取得、チェックなどを行う。– ログインユーザー情報取得
“`php
$login_user = auth()->user();
“`– ログインチェック
“`php
if(auth()->check()) {
//ログインしました
}
“`####3. env()
.envの中に書かれている文字列(環境変数)を取得する。**例)**.envに“`DB_CONNECTION=mysql“`と書かれている場合
“`php
$env = env(‘DB_CONNECTION’);
dd($env);
//出力:’mysql’
“`####4. config()
env()と似ていますが、configデ
【PHP8.0】なんでもあり型が書けるようになる
ジェネリクスではない…ジェネリクスではないのだよ………
ざっくり言うと[var_dump()](https://www.php.net/manual/ja/function.var-dump)の型引数です。
var_dumpにはプリミティブ値にオブジェクトにリソース型にと、どんな値でも渡すことができるのですが、PHP7.4時点の型システムではvar_dumpの引数の型を表すことができません。
PHP8.0で導入予定の[union型](https://qiita.com/rana_kualu/items/f75e254553157d8eb0b7)を使うと`array|bool|callable|int|float|null|object|resource|string`となるのですが、実は`resource`型はPHP8.0でもまだ使えないので、`mixed`型を完全に再現することはできません。ということで[Mixed Type v2](https://wiki.php.net/rfc/mixed_type_v2)のRFCが提出されました。
投票は2020/05/21まで、受理には
【2020年度版】EC-CUBE の開発環境の作り方
[ビルトインウェブサーバーで簡単環境構築](https://qiita.com/nanasess/items/c835e87c0e720c4e391f) や、 [EC-CUBE の開発環境の作り方](https://qiita.com/nanasess/items/7170ab22e81e2e8e7edd)の2020年度版です。
最近、 **[symfony/cli](https://symfony.com/download)** が超絶使えるようになっているのでご紹介したいと思います。
– *一部制約がありますが、 WordPress や Symfony を使用していない EC-CUBE2系でも利用可能です*
– *Symfony3系、4系では `Symfony/WebServer-bundle` で開発用ローカルウェブサーバーを起動していましたが、 Symfony5系では廃止されました*## symfony/cli とは
– Symfonyプロジェクトを新しく作成したり
– パワフルな開発用ローカルウェブサーバーが利用できたり
– セキュリティチェックができたりする便
PHPでWEBサイトの変更を検知してLINEに通知する
先日、Qiitaを物色していたらこんな記事を見つけました。
[【自動化】WEBサイトの変更を検知してLINEに通知する](https://qiita.com/Potewo/items/431cea6b954652adb0b3)
やってみよー。と思いましたが、残念、Pythonにそこまで詳しくないという事実が発覚しました。
ってことで、PHPでやっていきます。
### 0, 前準備
取り合えず、VPSは借りてました。
さて、利用規約はどうかな~。ところがどっこい、弊学のHPには利用規約もプライバシーポリシーもないという。。。### 1, 簡単に処理の流れを考えていく
crontabで定期的にPHPの処理を実行して変化があればLINEに通知していく。
という極めてシンプルな方法をとりたいと思います。
### 2, コードを書いていく
まず、HPのコードがどのようになっているか見ていかなければなりません。
HPのうち、取得したい部分を抜粋します。
“`HTML
記事一覧
“;
?>
“`“`css:style.css
.red{
color:red;
}
“`
#まとめ
いかがだったでしょうかphpだからといって難しく考えることはないことがわかるとおもいます。Laravelで前処理、後処理を実装する
# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています# 前処理、後処理をつくる
Laravelで前処理、後処理を行うにはMiddlewareを作成します$nextの前に書く処理が前処理となります
$nextの後に書く処理が後処理となります
(1) /sample/app/Http/Middleware/GlobalSample.php作成
“`GlobalSample.php
PHP Laravel 復習
#前提
人の脳は2日で73%忘れると聞いたため学んだことを復習していきます。#本題
“`PostController.php
return view(‘posts.index’, [‘posts’ => $posts]);
“`
viewメソッドの第一引数には、ビューファイル名を渡す。‘posts.index’とすることで、resources/views/postsディレクトリにある、indexという名前のビューファイルが表示される。
viewメソッドの第二引数には、ビューファイルに渡す変数の名称と、その変数の値を連想配列形式で指定。
ここで、’posts’というキーを定義することで、ビューファイル側で$postsという変数が使用できるようになる。
また、Laravelでは、それ以外のコードの書き方でも変数をビューに渡すことが可能。
1、withメソッド
“`PostController.php
return view(‘posts.index’)->with([‘posts’ => $posts]);
“`
viewメソッドにwithメソッドを繋げて、wiphp:7.3-fpm-alpineで、モジュールのインストール
# phpのモジュールのインストール
composerを実行したときに、socketsがないとのエラーが発生しました。
エラー解決の道のりで学んだことを共有します。
## 筆者の使用している環境
・docker
・php:7.3-fpm-alpine
## error内容
“`
composer require linecorp/line-bot-sdk
“`
のコマンド実行時にエラーが発生しました。“`
/work # composer require linecorp/line-bot-sdk
1/3: https://packagist.jp/p/provider-2020-04$0debce5054869c0cc3060fd8316edffa3035f0642bf192c9e9cf9724d7429a24.json
2/3: https://packagist.jp/p/provider-latest$a6fa0af3f924c039609f8f1f06ac662b10318aa68e1148be6b1bdb31361c8SymfonyでDQLを拡張してMysqlの関数を使えるようにする
# 概要
Symfony + EC-CUBEでDQLを拡張する方法を学んだのでまとめました。# 動作確認環境
“`
EC-CUBE 4.0.3
Symfony 3.4.26
PHP 7.3
MySQL 5.7
“`# DQLの拡張方法
## DoctrineExtensionsライブラリを導入する
今回は、キーワードで検索時に照合順序を指定して検索することが課題でした。
なので、MysqlのCOLLATEが利用できればよかったのでDoctrineExtensionsライブラリを利用しました。他にもライブラリが存在するでしょうが、用途や実現したいことによって使い分ければよいと思います。“`
composer require beberlei/doctrineextensions
“`使いたい関数があるかどうかは、githubを参照してください。
[DoctrineExtensions](https://github.com/beberlei/DoctrineExtensions)## EntityManagerに利用したいMySQLの関数を設定する
クエリを生Raspbianにaptでnginx+PHP7.3を導入
# 導入経緯
Raspberry Pi4を購入してWebサーバーを構築します。
Apacheのほうが慣れているのですが、nginxに乗り換えたいと思ったので実行してみました。# nginxのインストール
最近はapt-getよりaptを使うことが多いですので、説明もaptで統一します。まずは、「nginx」のインストールコマンド
`$ sudo apt install nginx`「nginx」の起動
`$ sudo systemctl start nginx`nginxが起動したら、ブラウザからRaspberry PiのIPアドレスにアクセスするか、Raspberry Piのブラウザからlocalhostにアクセスしてnginxの初期ページが閲覧できることを確認しましょう。
# PHP7.3のインストール
PHPは今回「7.3」を使います。
「php7.3」のインストールコマンド
`$ sudo apt install php7.3 php7.3-fpm php7.3-mbstring php7.3-gd php7.3-xml`
※WordPressとか使うことをがPHPの例で学ぶインターフェイスって何?
現場でPHPのコードを見る中で、インターフェイスが実装されているケースがあるのですが、初心者に毛が生えたレベルのエンジニアの私には、よく分かっていないので、まとめてみました。
まずは公式よりの引用↓
0.公式よりの引用
>
>オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの 種類を、これらのメソッドの実装を定義することなく、指定するコードを作成できる ようになります。
>
インターフェイスは通常のクラスと同様に定義することができますが、 キーワード class のかわりに interface を用います。またメソッドの実装は全く定義されません。
>
インターフェイス内で宣言される全てのメソッドはpublicである必要があります。 これは、インターフェイスの特性によります。
>
コンストラクタ をインターフェイスで宣言できることに注意して下さい。 これはたとえばファクトリで使う場合など、コンテクストによっては役に立ちます。
>[公式より引用] (https://www.php.net/manual/ja/language.oop5.interfac
LaravelでJSONを返す(Ajax)
# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています# Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにjson1メソッド、json2メソッドを追記“`
public function json1(Request $request)
{
return view(‘sample.json’);
}public function json2(Request $request)
{
$data = [
‘a’ => $request->input(‘a’),関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた