- 1. CSRF保護が有効になっているのが原因
- 1.1. amazon comprehendをPHPで動かす
- 1.2. LAMPスタックの基本ガイド
- 1.3. PHP 定数について
- 1.4. 【PHP】マイナーフレームワーク「Flow」を試してみる~API作成編~
- 1.5. ScoopでPHPをインストールする
- 1.6. 良いユニットテストって何だろう
- 1.7. 【Laravel】大文字・小文字・数字が1文字以上含まれるパスワードの生成方法
- 1.8. 【Laravel】ログイン済みの特定ユーザーのみが閲覧できるページの作成方法
- 1.9. YouTube Data API V3で動画情報を取得する方法: プロジェクト作成からAPIキーの発行まで
- 1.10. formDataでデータを送信するとLaravel(PHP)側で空配列になる原因
- 1.11. 【個人開発】お金貸借り管理BOT作ってみた(Laraevl ✖️ Line Messaging API ✖️ LIFF)
- 1.12. 【OCI】Dockerで作成したイメージをOCIコンテナインスタンスで動かしてみる
- 1.13. symfony2.8 => 3.4 にアップグレード後、キャッシュクリアが出来ない
- 2. 前提
- 3. 動作環境
- 4. エラー内容
Neither the property “_token” nor one of the methods “_token()”, “get_token()”/”is_token()”/”has_token()” or “__call()” exist and have public access in class “Symfony\Component\Form\FormView”
CSRF保護が有効になっているのが原因
symfony 2.8 で作成されたウェブサイトを symfony 6 台で再構築している時に表題のエラーが表示されました。
Symfony では CSRF (クロスサイト リクエスト フォージェリ)からの保護がデフォルトで有効になっているようです。通常のウェブサイトの運営であれば有効な方が良いとは思いますが、
今回は、ひとまず開発を先に進めるため旧サイトの設定(CSRF保護は無効)に合わせ、有効化についてはクライアントと相談する事にします。①CSRF 保護有効/無効のパッケージをインストール
“`
composer require symfony/security-csrf
“`②config/packages/framework.yaml の framework以下に csrf_protection: ~ を追加します(CSFR保護の無効化)。
“`
framework:
csrf_protection: ~
“`
公式ドキュメント通りなのですが、エラーメッセージで検索してすぐに分からなか
amazon comprehendをPHPで動かす
## はじめに
個人開発しているwebアプリで機械学習による自然言語処理を使った機能を実装するため、phpから[amazon comprehend](https://docs.aws.amazon.com/ja_jp/comprehend/)を使えるようにしましたが、なかなか苦戦したのでやり方を残しておきます。## 対象者
– amazon comprehendを外部からweb apiのように使いたい人## 結論
phpから感情分析が行えるようになりました
“`php:example.php
‘ap-northeast-1’,
‘version’ => ‘latest’
]);$result = $client->detectSentiment([
‘LanguageCode’ => ‘ja’, // REQU
LAMPスタックの基本ガイド
## はじめに
LAMPは、Linux、Apache、MySQL、PHP(またはPerl、Python)の頭文字を取ったもので、ウェブアプリケーションを構築するためのポピュラーな技術スタックです。この記事では、初学者向けにLAMPスタックの基本的な概念と各コンポーネントの役割について説明します。## LAMPとは?
Linux (オペレーティング システム): LAMPの基盤となるOS。安定性とセキュリティが特徴です。Apache (Webサーバー): ウェブサーバーとしての役割を果たし、クライアントからのリクエストを処理して静的および動的なコンテンツを提供します。
MySQL (データベース管理システム): データベースの作成、読み書き、更新、削除などのデータ管理を担当します。
PHP (スクリプト言語): 動的なウェブページを作成するためのスクリプト言語。データベースとの連携が得意。
## LAMPの特徴
#### オープンソース
LAMPコンポーネントはすべてオープンソースであり、無料で利用できます。これは特に初学者にとって負担のない環境を提供します。####
PHP 定数について
# 対象読者
[こちらの記事と同様](https://qiita.com/bpg_ts/items/1a25f6bd3d4656fb0bda#%E5%AF%BE%E8%B1%A1%E8%AA%AD%E8%80%85 “対象読者”)# 定数とは
### 定数
「データを入れるための箱」、「名前を付けることができる」という点は、変数と役割は一緒。**変数との大きな違いは、「再代入が不可能」であること**。### 定数を使う場合、使わない場合の比較
一度定数を定義すると、プログラム中で使い回せる。また、メンテナンス性が向上するのも便利な点だ。以下に、定数を使わない場合と使う場合のコードの比較を示す。実行結果は同じ。
##### 定数を使わない場合
“`php:定数を使わない場合
‘;
print (200 * 1.1).’
‘;
print (300 * 1.1).’
‘;/* 実行結果
110
220
330
*/
?>
【PHP】マイナーフレームワーク「Flow」を試してみる~API作成編~
# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/003a21f31bc8d0546c08)の記事でFlowの環境構築を実施しました。
今回はJson形式のレスポンスを返す簡単なAPIを作成してみたいと思います。# さっそく作ってみた
プロジェクト構成は以下です(今回の話で出てこないものは割愛しました)。
“`Neos.Welcome“`の下にTestControllerを新しく作成していきます。“`
Quickstart
└ Packages/
├ Application/
| └ Neos.Welcome/
| ├ Classes/
| | └ Controller/
| | ├ StandardController.php
| | └ TestController(★)
|
ScoopでPHPをインストールする
勉強するためにWindows環境でXAMPPを利用していて、Macユーザーになったので、Dockerを使いだし、Windowsの方でもDockerを主に利用していたのですが、諸事情でScoopでPHPだけインストールすることにしてみた走り書き。
# とりあえずScoopのアップデート
“`
scoop update
“`“`
Updating Scoop…
Updating ‘main’ bucket…
error: Your local changes to the following files would be overwritten by merge:
bucket/amass.json
bucket/bombardier.json
bucket/drmemory.json
bucket/dynamorio.json
bucket/gitleaks.json
bucket/gosec.json
bucket/grype.json
b
良いユニットテストって何だろう
# はじめに
私が今所属しているチームでは、バックエンドをPHPとLaravelで開発しています。
今までチームとしてユニットテストを書いていなかったのですが、これから機能開発をする際にはユニットテストを書いていこうということになりました。ユニットテストに対する知見がチームとして薄いので、いい機会だと思い社内で勉強会を開催しました。
この記事は、その第一回目でチームに共有した内容です。今回はあくまで理論的な話で、具体的なコードはでてきません。参考にした書籍は、[Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考](https://www.amazon.co.jp/Good-Code-Bad-%EF%BD%9E%E6%8C%81%E7%B6%9A%E5%8F%AF%E8%83%BD%E3%81%AA%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A8%E3%8
【Laravel】大文字・小文字・数字が1文字以上含まれるパスワードの生成方法
## 概要
下記の条件を満たすパスワードの生成
– 大文字が1文字以上含まれる
– 小文字が1文字以上含まれる
– 数字が1文字以上含まれる
– 文字数は8文字### 環境
– Laravel Sailでの環境構築
– Laravel 10.30.1
– PHP 8.2.12## 実際の記述
“`php
private function generatePassword(): string
{
$password = Str::password(8);if (preg_match(‘/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$/’, $password)) {
return $password;
}return $this->generatePassword();
}
“`## 補足
– `Controller`内のprivateメソッドに定義した際の記述
– ハッシュ化(`Hash::make()`)はメソッドの呼び出し先で処理
– 他の文字
【Laravel】ログイン済みの特定ユーザーのみが閲覧できるページの作成方法
## 概要
– adminユーザーとデフォルトユーザーでテーブルを分けるのではなく、1つのユーザーテーブルのみを作成
– それぞれのユーザーが持つ`admin_id`の値で権限をチェックして、ログイン済み、且つadmin権限を持つユーザーのみが閲覧できるページを作成### 前提
– Laravel Breezeがインストール済
– `admin_id`カラムを持つUserテーブルを作成
– `admin_id`が1の場合、adminユーザー
– `admin_id`が1以外の場合、デフォルトユーザー### 環境
– Laravel Sailでの環境構築
– Laravel 10.30.1
– PHP 8.2.12
– Laravel Breeze## 実際の記述
“`php:app/Models/User.php
// 既存ファイルに以下を追記public function isAdmin(): bool
{
return $this->role_id === 1;
}
“`“`php:app/Http/
YouTube Data API V3で動画情報を取得する方法: プロジェクト作成からAPIキーの発行まで
## はじめに
Youtubeの動画リストサイトを構築する際に、Youtubeの動画情報を取得するYoutube Data API V3を利用しました。YouTube Data API V3は、YouTubeのデータをアプリケーションで利用するための強力なツールです。この記事では、Google Cloud Platformでのプロジェクト作成からAPIキーの発行までの手順を、初心者の方にもわかりやすく説明します。## Google Cloud Platformでのプロジェクトの作成
#### Google Cloud Platform(GCP)にアクセス
[Google Cloud Platform](https://console.cloud.google.com/?hl=ja)にアクセスし、アカウントにログインします。#### プロジェクトの作成
左上のプロジェクトボタンから「新しいプロジェクト」をクリックし、新しいプロジェクトを作成します。プロジェクト名と請求先アカウントを入力し、「作成」ボタンをクリックします。![スクリーンショット 2023-11-17 14.0
formDataでデータを送信するとLaravel(PHP)側で空配列になる原因
## はじめに
Laravelとフロントエンド(例えばReactやNext.js)の間で画像ファイルを送信する際にバイナリデータの送信ではなく、マルチパートフォームデータで送信する際は、`formData`で送らないといけないのですが、AxiosでAPIを叩いてFormDataを送信する際になぜかLaravel側でデータが空配列になってしまう現象です。https://apidog.com/jp/blog/form-data-content-type-introduction/#:~:text=form%2Ddata%E3%81%A8%E3%81%AF%E3%80%81Web,%E3%81%A6%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%81%99%E3%80%82
## エラー内容
問題の典型的なシナリオは、フロントエンドからLaravelのAPIへフォームデータを送信しようとすると、Laravel側で`$request->all()`や`$request->input()`が空の配列を返す
【個人開発】お金貸借り管理BOT作ってみた(Laraevl ✖️ Line Messaging API ✖️ LIFF)
25卒でエンジニアのインターンをやっている者です。
現在はベトナムのダナンで半年間のエンジニアインターンに参加をしています。
エンジニアを始めてからこれまで、業務以外でオリジナルのアプリを作ってリリースしたことがなかったのですが、作りたいものがあり、結構すぐ作れそうだなと思い今回作成してみましたのでそちらの紹介をします。
これからポートフォリオの開発をしたい人とかの助けになれば良いなと思います。
## 制作動機
作成の動機はここら辺です。
主に自分のお金周りの管理をちゃんとしたいなーという思いが動機としては強いです。– 現在海外のインターンでルームメイトと同居しており、お金の貸し借りが増えたから。
– 返した・返してないが曖昧になりがちだから。
– 自分が適当すぎて不快にさせる可能性があるなと思ったから。
– お金貸し借り管理系のアプリはあったけど、自分の携帯のストレージが逼迫しているからインストールはしたくなかった。
– アプリインストール より使うにあたって心理的ハードルが低いかなと思った。
– インターン先でLINE BOT や telegram BOTの開発に関わ
【OCI】Dockerで作成したイメージをOCIコンテナインスタンスで動かしてみる
# はじめに
今回はOracle Cloud Infrastructure(OCI)が提供している
コンテナインスタンスにNginx + PHPが動作するDockerコンテナを
立てて動かしてみたいと思います。コンテナであれば、VM(Compute)にDocker環境を作って動かせますが、
わざわざそのためにVMを立てて管理するのもスマートではなく
コンテナインスタンスを使ったら手間もかからず利用できるので
そのあたりの簡単な手順を紹介したいと思います。■参考
コンテナ・インスタンスの概要
https://docs.oracle.com/ja-jp/iaas/Content/container-instances/overview-of-container-instances.htmOCI Container Instances概要 / OCI Container Instances
ローカル環境に設定したDockerコンテナでNginx +
symfony2.8 => 3.4 にアップグレード後、キャッシュクリアが出来ない
前提
ローカル環境(xampp)で、Symfony v2.8 を v3.4.49 にアップグレード後、PHP 8.2.10 で動かそうと検証している最中に出会ったエラーです。
動作環境
Windows 10 Pro
XAMPP Version: 8.2.4
PHP 8.2.10
Symfony v3.4.49エラー内容
キャッシュをクリアしようとすると、
“`
php app/console cache:clear –env=dev
“`
エラーになります。
“`
[Semantical Error] The annotation “@Route” in method AppBundle\Controller\DefaultController::indexAction() was
never imported. Did you maybe forget to add a “use” statement for this annotation? in C:\xampp\htd
【PHP】マイナーフレームワーク「Flow」を試してみる~環境構築編~
# 初めに
PHPの「**Flow**」というフレームワークをご存じですか?
おそらくこのフレームワークを知っている人は少ないと思います。自分もその一人でした。先日たまたまFlowを触る機会があり、とりあえずQuickstartを試してみるかと思ったのですが
* **公式ドキュメントの手順が省略されていて、PHP初心者には難しい**
* **マイナーすぎて参考資料が出てこない**ということに苦しめられ、なかなか環境構築が進みませんでした。
github-copilotに助けられながらなんとか完了することができたので、今回は公式ドキュメントの[Quickstart](https://flowframework.readthedocs.io/en/stable/Quickstart/index.html)のソースを元に環境構築方法をまとめてみました!
# Flowとは
Flowとは[flownative](https://www.flownative.com/)社が出しているオープンソースのPHPフレームワークです。**ドメイン駆動設計**(DDD)を中心原理として設計され
[小ネタ]PHPで数値を先頭空白埋め・右揃え・桁区切りして表示したい
### やりたいこと ###
要は、数値をこうやって(↓)出力したいってことです。
sprintf関数を使って何とかできないか、ググったり試行錯誤しましたが、(ニーズはあるはずやのに)なかなかしっくりくる答えは見つからず・・・:frowning2:
“`
入力件数 : 12,000件
エラー件数 : 1,000件
スキップ件数 : 200件
出力件数 : 10,800件
“`
***
### 何てことなかった ###
が、そのうちひらめきました。
Max百万台を表示する例です。
“` php
echo “入力件数 :” . sprintf(“%9s”, number_format($cnt_inrec, 0)) . “件”;
“`
sprintfで文字列フォーマット指定するのがミソでしょうか。
Smartyで対応する場合は、左から右にオプションが評価されるので、次のようになります。
“`
入力件数 :{$cnt_inrec|number_format|string_format:”%9s”}件
“`
【PHP8.4】全角スペースをtrimできるようになるぞー
なんとなく[RFC](https://wiki.php.net/rfc)を見ていたら[Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim](https://wiki.php.net/rfc/mb_trim)というRFCが投票に入っていました。
というわけで、以下はこのRFCの紹介です。
# PHP RFC: Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim
## Introduction
PHPには、マルチバイトのtrim関数がありません。
`preg_replace(“/^\s+|\s+$/u”, ”, $string)`で概ね想定した挙動になりますが、関数を予め用意しておくことでコードの可読性とわかりやすさを向上させることができるでしょう。
また、トリッキーになりがちなこの処理を標準化することができます。
この機能は多くのPHP開発者にとって有用であり、mbstringモジュールはこれで完成にまた一歩近づきます。ユースケースのひとつとし
Laravelの`Collection`におけるPHPDocの設定
こんにちは,ご覧いただきありがとうございます。
## はじめに
Laravelをお使いの皆さんはプログラミングする際にPHPDocを使われていますか?
私はいつも使っているのですが,`Collection`の際の使い方がいまいちわかっておりませんでした。
ググってもほしい情報はヒットしませんでした(キーワードの問題?)今回,プログラミング中にたまたま書き方がわかったので共有します。
といってもシンプルに`array`と同様でした。笑## `Collection`におけるPHPDoc
“`php
/** @var \Illuminate\Database\Eloquent\Collection<, \App\Models\Model> */
// あるいは
/** @var \Illuminate\Database\Eloquent\Collection*/
“`## 結論
ものは試しですね!
PHP 変数について
# 対象読者
[こちらの記事と同様](https://qiita.com/bpg_ts/items/1a25f6bd3d4656fb0bda#%E5%AF%BE%E8%B1%A1%E8%AA%AD%E8%80%85 “対象読者”)# 変数とは
### 変数
一言で言えば、「**データを入れるための箱**」。変数を宣言すると、メモリ上に領域が確保される。変数(箱)を使うメリット
* **名前を付けることができる**
* **再代入が可能**### 変数の宣言
以下は、`$wallet`(変数:財布)に、1000(1,000 円)を入れて変数を宣言する例。**イコール** (`=`) は、**代入**を表す。
“`php:PHP
“`
:::note info
PHP は **動的型付け** 。`$wallet`(財布)という **変数名** として名前を付与することで、人間が直感的に理解しやすいものとなっている。
:::### 変数の命名規則
* 「`$ ~`」
WordPressオリジナルテンプレートでポートフォリオサイトを制作しました
![スクリーンショット 2023-11-09 21.49.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618748/b679dcb6-c1e6-fcf2-9a67-5e63818e9019.png)
## はじめに
はじめまして。閲覧いただきありがとうございます。
WordPressオリジナルテンプレートでポートフォリオサイトを制作したのでご説明させていただきます。## サイトのの概要
学習や行動した実績をポートフォリオサイトです。・制作実績、私について、ブログページ、コンタクトフォームの4つの構成。
・”親しみやすさ”、”温かみ”をコンセプトとして制作。
・自分のできることを詰め込みつつ、サイトから人柄が少しでも伝わるよう制作しました。## 想定ユーザー
・採用担当者様
・WEBディレクター様## 機能一覧
| | 機能 |
|:-|:—————–|
| 1 | Swiper3種(FV、制作実績セクション、その他の記事) |
| 2 | カスタム