- 1. サブディレクトリ型の多言語サイトにおける言語切り替え時の遷移先URIの設定
- 2. WordPress でサムネイル画像の自動生成に Intervention Image 2 を使ってみる
- 3. 引数、戻り値とは?関数について理解が足りないので勉強してみた
- 4. php.iniファイルが作成できない(Mac)
- 5. 【初参加】カンファレンス参加はいいぞ【PHPカンファレンス】
- 6. postされた日付をexplode関数で区切りcheckdate関数でバリデーション
- 7. AWS Amazon LinuxでWordPressを立てた時にカスタムパーマリンクが機能しない時の対処法
- 8. PHPカンファレンス関西2024に行ってきました
- 9. [Laravel / Fortify] 認証処理を可視化、カスタマイズしよう!
- 10. 【Drupal】PHP構成の設定
- 11. PHPカンファレンス 関西 2024
- 12. 【PHP】マイナーフレームワーク「Flow」を試してみる~セッション編~
- 13. 【PHP】PHPで使うfor文って何?
- 14. PHP入門 ~データベース接続~
- 15. サイボウズGaroonでSOAP APIを使ってPHPでリクエストを送る
- 16. laravel 他のフィールドの値によって必須としたいときのバリデーション
- 17. Laravel API Resourceのテスト
- 18. LEMP環境 Laravel Nginx Mysql PHPをDockerで構築してみた
- 19. CMSで作るモダンECサイト
- 20. 【PHP】代入演算子の返り値が変わることがある
サブディレクトリ型の多言語サイトにおける言語切り替え時の遷移先URIの設定
## 問題状況
同一のドメインで日本語のサイトを運営しているが、サブディレクトリ型で複数の言語に対応したサイトを構築することになった。ヘッダーには言語切替のボタンを設置したが、これがクリックされた時に同じ内容のページに遷移させたい。例えば、日本語、英語(English: en)、フランス語(français: fr)、中国語(中文: zh)に対応したWebサイトのTOPは、それぞれ、
– `https://www.mysite.com/`
– `https://www.mysite.com/en/`
– `https://www.mysite.com/fr/`
– `https://www.mysite.com/zh/`であり、それぞれの「ごあいさつ」や「会社情報」に相当するABOUT USのアドレスは、
– `https://www.mysite.com/aboutus/`
– `https://www.mysite.com/en/aboutus/`
– `https://www.mysite.com/fr/aboutus/`
– `https://ww
WordPress でサムネイル画像の自動生成に Intervention Image 2 を使ってみる
# 概要
PHPの画像処理ライブラリである [Intervention Image](https://image.intervention.io/v2) のバージョン2を WordPress で使う方法について調べてみました。WordPress で某サイトの画像一覧を作成中なのですが、元画像( 400KB 程度)が 50 ファイルもあると 1ページの転送量が 10MB をゆうに超えてしまうので、元画像から動的にサムネイルを自動生成してくれる、ちょうど Apache/Nginx の small_light のような機能が欲しいなぁ~とググってみました。環境がレンタルサーバですので、当然モジュールの追加などはできず。
Laravel の Intervention Image がよさげでこれを WordPress プラグインで使えないか探してみたところ、以下のプラグインが見つかりました。
https://github.com/getdave/wp-intervention
# プラグインのインストール
ソースを見ても、まんま Laravel ライブラリで WordPress プラグ
引数、戻り値とは?関数について理解が足りないので勉強してみた
関数についてあまり理解できていなかったので、
引数、戻り値について調べた備忘録です。下記を参考にしました。
引数、戻り値とは?【分かりやすい解説シリーズ #7】【プログラミング】
“`
引数(パラメータ)=材料
戻り値(返り値)=結果
“`
関数は、各言語で用意されているものもあるし、自作することもできるもの“`
材料をいれると
↓
処理されて
↓
結果が出てくる
“`例えば、大根電動おろし器があったとする
“`
大根を処理機に入れて
↓
おろし処理され
↓
すりおろされた、大根おろしがでてくる
“`
プログラミングの考えに戻すと
“`
引数
↓
関数
↓
戻り値
“`## 実際の処理(phpの場合)関数の定義
“`php
function 関数名(引数){
行う処理;
return 戻り値;
}
“`
## 簡単な実例
“`php
function colc ($num1,$num2){
// 引数1と引数2を足して$totalに入れる
$
php.iniファイルが作成できない(Mac)
あるPHP講座でphp.iniファイルの作成をするところで沼ってしまったので、備忘録として対処法を書いておきます。
– ### やりたかったこと
**php.ini(PHPの環境設定ができるファイル)をターミナルで作成したい。**動作環境はMacです。
Macに標準搭載されたPHPにはphp.iniファイルが作成されていないため、“/etc/php.ini.default“を“sudo cpコマンド“でコピーしてやります。
念のためまずは、“lsコマンド“でphp.iniファイルが作成されていないことを確認しました。
“`
$ ls /etc/php.ini
ls: /etc/php.ini: No such file or directory
“`
↑No such fileと出ていれば大丈夫です。:::note warn
/etcフォルダ以下の編集では管理者権限が必要なので“sudoコマンド“を使います。
:::– ### 問題点
**php.iniファイルが作成できない!**“cpコマンド“に2つの引数(コピー元・コ
【初参加】カンファレンス参加はいいぞ【PHPカンファレンス】
# はじめに
どうもこんにちは、イトイ(@Itoi)です。エンジニアになって1年半、ずっと憧れていたことがありました。
それは「**大きなエンジニアイベントに行ってみたい!**」というミーハーな内容です。昨年はAWSのイベントやRubyKaigiもありましたが、どうしても都合がつかず…
そんな私に待望のイベントがありました。それは **PHPカンファレンス関西2024**!!(2024/02/11(日) 開催)
こちらに参加してきました!PHPカンファレンスは思っていた以上に楽しく、実りある経験となりました。
この記事で、カンファレンス未体験の方に私が感じた魅力を少しでも伝えられればと思います。
(そして参加者が増え、カンファレンス文化がもっと盛り上がりますように!)## 魅力1 ノベルティがもらえる
いきなり現金な内容です笑
多くのカンファレンスでノベルティがもらえると思います。
今回はトートバッグに色々入っていて、中を見るのがワクワクしました。もう1点、参加景品として、参加者のアイコンを載せたトレーディングシールを配っていました。
持っている方は名刺がわり
postされた日付をexplode関数で区切りcheckdate関数でバリデーション
postされた日付などをcheckdate関数を使用してバリデーションを行いたい時にexplode関数を使います。
## 使ってみる
checkdate関数は引数1に月、引数2に日、引数3に年を渡さなければいけません。なので、explode関数を使用してcheckdate関数に合う形にします。
“`php
$date = $_POST[‘date’]; //’2024-02-12’が入っている
$array_date = explode(‘-‘, $date);
“`
引数1に何事に区切るか(上記では-)、引数2に区切りたい文字列が入った変数を指定します。
var_dumpで出力して確認していきます。
“`
array(3) { [0]=> string(4) “2024” [1]=> string(1) “2” [2]=> string(2) “12” }
“`## checkdate関数で正しい日付かチェック
checkdate関数で正しい日付化チェックしていきます。先ほど書いたようにcheckdate関数は引数1に月、引数2に日、引数3に年を渡さなければいけません。
AWS Amazon LinuxでWordPressを立てた時にカスタムパーマリンクが機能しない時の対処法
## この記事について
[前回の記事](https://qiita.com/yabish/items/fff120b622d723f0e7ce)の執筆後にWordPressのパーマリンクを変更すると「更新に失敗しました。返答が正しいJSONレスポンスではありません。」とのエラー…
WordPressを初めて触っていたこともあり、何が原因かわからないエラー文に悪戦苦闘しましたが、なんとなく状況が理解できてきたので得られた知見をまとめました。
おそらく、[really simple ssl](https://ja.wordpress.org/plugins/really-simple-ssl/)のプラグインが悪さしているのでしょうが…![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412378/6d8437be-28f8-ba4f-b001-4b73259b1016.png)
## 問題が発生した状況
AWSのアーキテクチャ:[前回の記事](https://qiita.com/
PHPカンファレンス関西2024に行ってきました
# はじめに
– 昨日[PHPカンファレンス関西2024](https://2024.kphpug.jp/)に行ってきました。
– 弊社はゴールドスポンサーとして協賛しており、バッグやパンフレットに大きくロゴを入れていただきました!
– 私もスポンサー枠で参加させてもらったので、拝聴したセッションごとに内容と感想を書いて行きます。
# Laravelでミニマム開発からスタートして個人サービスを利益化するまでの経験談!
– https://fortee.
[Laravel / Fortify] 認証処理を可視化、カスタマイズしよう!
**プロフィール**
* 私立文系大学3年
* プログラミング歴は1年1か月
* Laravel / javascript を主に使用
* 現在は React を学習中
* 最近友人にもらった日向坂・上村ひなの写真集を見て、少しハマりそう## Laravel / Fortifyについて
Laravelの認証パッケージには複数の種類がありますが、私は以下の2つの使用経験があります。
1. Laravel / ui
1. Fortify私がLaravelの学習を始めるにあたり、以下の書籍を購入し学習しました。
おそらく最もメジャーな書籍だと思われます。
[PHPフレームワーク Laravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83-ebook/d
【Drupal】PHP構成の設定
## はじめに
DrupalのPHP構成の確認画面をご存知ですか?
こちらのパスから確認することができます。
“/admin/reports/status/php“![PHP構成確認画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/576d9a60-85ba-d54b-f512-3c2695263f62.png)
通常であればインスタンスやコンテナの設定でPHP構成の管理を巻き取ることが多いのかなと思います。
ただ、
「本番環境・テスト環境ではメモリの制限それぞれ設定したい」
「開発環境ではメモリをフルに使いたい」
ってこと結構ありますよね。**(環境変数を使えば簡単にできるよって意見もあるかと思いますが…)**
今回は、アプリ側でのPHP構成の変更方法をご紹介します。
## 設定場所
設定場所はなんと!
Drupal標準で用意されています。### Drupal標準..?
軽くissueを調べてみましたが、恐らく“settings.php“ or “sett
PHPカンファレンス 関西 2024
先日、PHPカンファレンス関西に行ってきましたので、体験談を記録します。
# PHPカンファレンス関西とは
PHPカンファレンス関西は、PHPエンジニア(:PHPer)がPHPやPHP周辺の技術的知識やノウハウ、体験を共有するための大規模技術カンファレンスです。
今年は2018年から6年ぶりの開催になります。# 参加したセッション
– [レガシーシステムへのPHPStan導入から半年での課題と効果](https://fortee.jp/phpcon-kansai2024/proposal/10c6f1ac-ec4b-4895-8db7-39b9a13c84bb)
– [RDBアンチパターンと戦う – 削除フラグ完全攻略ガイド](https://fortee.jp/phpcon-kansai2024/proposal/4e03491c-2a97-40aa-8ff9-a68593b0e847)
– [アプリケーションエンジニアこそ「監視」だよね!と私が考える訳](https://fortee.jp/phpcon-kansai2024/proposal/42712995-5f3e-4c
【PHP】マイナーフレームワーク「Flow」を試してみる~セッション編~
# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/e98f25bec6cc067f24a4)の記事でFlowにおけるキャッシュの扱い方について解説しました。今回はセッションの扱いについて解説していきます。# セッションの扱い方
セッションによくある「ECサイトの商品カゴ」の例で説明します。まずは、セッションで扱いたい情報のクラスを用意しましょう。
以下のようなカゴEntityを作成しました。“`php
/**
* @Flow\Scope(“session”)
*/
class CartEntity {/**
* @var array
*/
protected $items = array();/**
* @param string $item
* @return void
* @Flow\Session(autoStart = true)
*/
public function addItem($item) {
【PHP】PHPで使うfor文って何?
## for文って何?
同じ動作を繰り返し行う場合には、ループ処理がよく使われます。
ループ処理を使用することにより、コードがシンプルになり作業効率が向上します。
そのループ処理を行う文の1つがfor文です。
for文は繰り返す回数が決まっているときに使用します。### どう記述するの?
“`php:for文
for (式1; 式2; 式3){
//ここに処理を書く
}
“`
0から5までの数字を表示させる場合
“`
for ($i = 0; $i < 6; $i++){ echo $i; } ``` ① **$i =0 ;** ここでは、式1を0で設定します。 ② **$i < 6;** ここでは、式2で$iが6より小さい間繰り返す指示をしています。 ③ **$i++;** ここでは、式3に処理を1回するたびに初期値に+1する指示を出しています。 ④ **echo $i;** ここでは、処理を1回するたびに$iを出力する指示を出しています。 echoした結果 012345 が表示されます。 ### 2つのfor文を連動させる、2重ループ f
PHP入門 ~データベース接続~
# PDOとは
「PHP Data Objects」の略で、PHPから簡単にDBにアクセスするための拡張モジュールです。データベースの種類やバージョンの違いを気にせずコードを書くことができます。# データベースに接続
PDOオブジェクトのインスタンスを作成します。以下の例では、変数$pdoに代入しています。
“`php
$pdo = new PDO($dsn, $username, $password, $options);
“`
4つの引数を渡していて、説明は以下の通りです。
* $dsn…データベースに接続するための必要な情報
`dbname`はデータベース名を指定
`host`はホスト名またはIPアドレスを指定
`charset`は文字セットを指定
“`php
$dsn = ‘mysql:dbname=test;host=localhost;charset=utf8mb4’;
“`
* $username…データベースに接続するためのユーザー名
ルート権限を使う場合、デフォルトは`root`です。
“`php
$username = ‘root’;
“`
* $p
サイボウズGaroonでSOAP APIを使ってPHPでリクエストを送る
## 記事の概要
社内ネットワークで組んでいるシステムから、同じく社内ネットワーク内にあるオンプレミス版のgaroon5のユーザ情報を取得したいという状況が発生し、初めてSOAP APIを使ってみたという内容の記事です。### 下調べ
ひとまずcybozu developer networkでgaroon API ドキュメントを確認。
[→SOAP APIの共通仕様](https://cybozu.dev/ja/garoon/docs/soap-api/overview/soap/)
[→ユーザ情報を取得するAPI](https://cybozu.dev/ja/garoon/docs/soap-api/base/get-users/)### 使用しているgaroonのAPI定義確認
定義の中にリクエストの送り先がAPIの種類ごとに書いてあります。
“`xml
laravel 他のフィールドの値によって必須としたいときのバリデーション
# やりたいこと
例
typeが1の場合のみdetailを入力必須にしたい
または入力禁止にしたい
“`
{
“type”: 1,
“detail”: “XXX”
}
“`# 結論
“`php:FormRequest
public function rules(): array
{
return [
“type” => [‘required’, ‘integer’, new Enum(Type::class)],
// 入力必須にしたいとき
“detail” => [‘string’, ‘nullable’, Rule::requiredIf(条件)]
// 入力禁止にしたいとき
“detail” => [‘string’, ‘nullable’, Rule::prohibitedIf(条件)]
];
}“`
例
“`php:FormRequest
“detail” => [‘stri
Laravel API Resourceのテスト
# 概要
調べ方が悪いのかもしれないけど、APIResourceのテストを書いた記事が見つけられなかった。
Featureテストを使えばリクエストからレスポンスまでをテスト出来るので、あまり需要はないかもしれないけど備忘録として残しておく。## 環境
– Laravel10
– PHP8.1
– MySQL8## Resource に Model を渡すケース
ControllerからユーザーモデルをResourceクラスに渡す
“`php: UserShowController.php
LEMP環境 Laravel Nginx Mysql PHPをDockerで構築してみた
## はじめに
最近LaravelのDocker環境を考える機会がありました。
他の環境は作ったことが何度かありましたが、Laravelは立ち上げのコマンドすら知らない状態でDocker環境を構築していったので良い学びになりました。
`healthcheck`を使用することにより、DBの準備完了前にLaravelがDBを読み取ろうとする事故をなくすことに成功しています。
コンテナの実行順序を正しく制御することで、terminarl上でDocker構築のログが止まる頃にはアプリが完全に応答する状態を保証しています。
適宜コメントを入れているので、参考にしてください。私は学生エンジニアです~~あと2ヶ月くらい…~~。
至らない点もあるかもしれません。
その点ご了承ください。## 前提条件
Docker, Docker Composeの知識## 各ファイルの説明
ファイル構成
“`shell
data/ # Dockerで立てたdatabaseの中身
docker/
db/
conf.d/
– my.cnf
init/
CMSで作るモダンECサイト
## こんなもの作りました。
義理の母がお花屋さんをしていて、たまに個人でお店をだしていたりしてるのですが、かなりセンスが良くリピーターも多いので「ECサイトで販売したら売れるのでは?!」と思い実際に作ってみました。
(レスポンシブ対応していないため、PC表示だとかなり崩れて表示されます・・)宣伝もかねて紹介させてもらいます。
## 使用技術
– WordPress
– PHP
– Bootstrap
– その他もろもろの無料サーバ、DBなどなど## 各パーツとこだわり
ロゴも自作です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480394/e17e00c6-590f-790b-ae9d-6af729f10b47.png)
TOPバナーのくすみ加工とカラーがお気に入りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon
【PHP】代入演算子の返り値が変わることがある
PHPの[代入演算子](https://www.php.net/manual/ja/language.operators.assignment.php)は式なので値が返ってきます。
どういうことかというと、`$a = 10`という代入式を書くと`$a`に10が代入されますが、それとは別に`$a = 10`全体としての値も10となるわけです。# 多重代入
時々ある
“`php
$a = $b = $c = 10;
“`という書き方、これは
“`php
$a = ( $b = ( $c = 10 ) );
“`と解釈されます。
まず`$c = 10`で`$c`に10が代入され、`$b`には`$c = 10`の返り値10が代入され、`$a`には`$b = ( $c = 10 )`の返り値10が代入される、ということになり、結果として`$a`・`$b`・`$c`すべてが10になります。プロパティも同じです。
“`php
$c = new stdClass();
$a = $c->b = 10;var_dump($a, $c); // $a=10, $b