PHP関連のことを調べてみた2022年12月14日

PHP関連のことを調べてみた2022年12月14日

php 初心者参考サイト

# 参考サイト

【PHP入門】公式ドキュメントを読もう

https://www.php.net/manual/ja/index.php

https://www.javadrive.jp/php/

https://webkaru.net/php/

http://www.standpower.com/

# 動画サイト

元記事を表示

ページネーションのサンプル(PHP)

ページネーションのサンプルプログラム(PHP)を実装しました。

“`PHP






TEST18


‘秋元真夏’, ‘age’ => ’29’),
array(‘name’ => ‘小川彩’, ‘age’ => ’15’),
array(‘name’ => ‘小坂菜緒’, ‘age’ => ’20’),

元記事を表示

独学にてポートフォリオ(Webアプリ)を作成しました【Laravel / Docker / AWS / Web API】

# はじめに
webエンジニアへの転職を目標に独学を開始し、約半年が経過しました。その時点で出来上がったポートフォリオについて紹介する記事です。本アプリを作成した経緯や実装する上で意識したこと、苦労した点も記載しておりますので、同じくwebエンジニアを目指されている方の参考になれば嬉しく思います。

# 投稿者
– webエンジニアを目指す27歳の会社員(医薬品系)
– プログラミングとの出会いは社会人になってからで、それまでプログラムの実装経験なし
– 2022年6月から本格的にプログラミング学習開始

# アプリの概要
![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517863/e7206bcc-ccac-3031-c956-c4b599ef9b46.png)

– ひとことで表現すると **『 読書での学びを行動に繋げる読書メモアプリ 』**
– サービス名は **『 3PointsBook 』** 
( GitHub:https://github.com/masa0307/3po

元記事を表示

symfony/slack-notifier使ってみた

[Symfony Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony) 14日目の記事です✨

`symfony/slack-notifier`を使ってみたよーって記事です。

## `symfony/slack-notifier`はどんなもの?

https://github.com/symfony/slack-notifier

まず、`symfony/notifier`という通知するためのコンポーネントがもあります。
このコンポーネントは、

– SMS Channel
– Chat Channel ?Slackはココ
– Email Channel
– Browser Channel
– Push Channel

をサポートしており、Slackなどは`Chat Channel`に該当します。
これらは[Chatterクラス](https://github.com/symfony/symfony/blob/6.2/src/Symfony/Component/Notifier

元記事を表示

PHPで文字エンコーディングがWindows-31JのJSONを作る

これは [エキサイトアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/excite-hd) の記事です

# 前提
通常、JSONの文字エンコーディングにはUTF-8を使用することになっています。
またphpでは`json_encode()`を使うと、デフォルトでは日本語のような文字列は`\u65e5`のようにUnicodeの16進数表現にエスケープされます。

だがしかし、文字エンコーディングが`Windows-31J`のJSONをphpで作りたい。という時の記事です。

## Windows-31J とは?
`Shift-JIS`のWindows用の拡張の一種のようです。`MS932`とか呼ばれることもあるようです。
`Windows-31J` というのは割とJava界隈での呼び方?(筆者の私見です)のようで、phpでいうと`SJIS-win`です。

# やり方

日本語部分をUnicodeエスケープされないようにしたうえで、`mb_convert_encoding()`で変換してやりました。

“`php:エンコード

元記事を表示

とても参考になった記事まとめ

業務のいろんな場面で参考になった、現在進行形で活用している記事をまとめました。
投稿者の皆様には改めてお礼申し上げます。
# コマンド

コマンド覚えられないので何度でも見返します。

https://qiita.com/keisukee/items/a07743279ae86effe1ca
# PostgreSQL
カラムが多いテーブルをselectした際の表示のあまりの見辛さに悩んでいたので、\x に救われました。

https://qiita.com/kiyodori/items/b9b34c7abe7e45f65c46

特定のテーブルをdumpする方法。

https://qiita.com/y_u_i_c_h_i/items/c3a0a981d01c790133ac
# Laravel

修正が反映されない…何かおかしいと思ったらとりあえずキャッシュを疑ってみる。

https://qiita.com/Ping/items/10ada8d069e13d729701
# その他
Carbonを使う機会が多いので、めちゃくちゃ助けられてます。

https://blog.cap

元記事を表示

Webアプリケーションをセキュアに、”Security Bundle”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の14日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、S

元記事を表示

プライベートと仕事のGoogleカレンダーを同期して予定枠を抑えてブロックする

プライベートの予定は個人アカウントのGoogleカレンダーには登録しておいたんだけど、
会社のカレンダーに登録していなくて、空いていると思われミーティング設定されてしまいました。
こういうのは後で調整し直さないといけなくて面倒です。

ゲストに会社のアドレスを追加しておけば良いのですが、面倒なのと、プライベート→会社への共有はできても逆は無理です。
また家族用とか常駐先とか副業先とかもっとカレンダーが多くなってしまっている人も多いでしょう。

そういったカレンダーの予定を取得し、それぞれのカレンダーに予定枠を作り、予定を入れられてしまうのをブロックしてもらうシステムを作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7132/d19a55c1-b7b5-615a-0bdf-ddbd946b95c7.png)

今回は会社側のアカウント設定など自由の利かない部分もあるので、OAuthを使ったウェブアプリ(サーバーの用意が面倒なのでPHP)にしました。

## Google Ca

元記事を表示

DoctrineとEloqunet比較大全13: UNIONクエリ

day13(?)の今日はUNIONクエリを実行する方法を見ていきます。

## Doctrine

“`php
$rows */
$rows = $entityManager->getConnection()->fetchAllAssociative(‘SELECT id, name FROM

元記事を表示

PHP8.2で非推奨になったエンコーディングたち

この記事は PHP Advent Calendar 2022 13日目の記事です。

つい先日、PHP8.2がリリースされました :tada:
毎回メジャーリリースでは便利な新機能が追加される一方で、下位互換性のなくなる変更や非推奨になる機能も存在します。
既存システムのPHPをバージョンアップするためには、これらの変更に対応していく必要があります。

ここでは、PHP8.2での変更の1つ「[mbstringの一部エンコーディングの非推奨化](https://www.php.net/manual/ja/migration82.deprecated.php#migration82.deprecated.mbstring)」を取り上げます。

## 変更の概要
mbstringの`mb_convert_encoding()`や`mb_strlen()`などの関数には、`$encoding`という引数があり、引数の文字列の文字コードを指定できます。
ここに指定できるエンコーディングのうち、`qprint`, `base64`, `uuencode`, `HTML-ENTITIES`の4種が

元記事を表示

コメントを美しく書いてみよう!

# はじめに
>美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているのかが伝わってくる。

でお馴染みのリーダブルコードという本の内容から、コメントに焦点を当てて記載しました。
**参考文献:リーダブルコード**

これまでの経験と本の内容を合わせて、それっぽいコードをサンプルに記載してまとめています。

## コメントを美しく書く理由
リーダブルコードによると
>コードは理解し易くなければならない。他の人が最短時間で理解できるように書く必要がある

と記載されています。
つまり、読みやすいコードを書くのが大事です。
そして、一番簡単に誰でも実践できるのがコメントだと思います!

## ただし不要なコメントはすべきでない
コメントを多く書けばいいわけではなく、不要なコメントは書くべきではありません。
コメントを読むことで、コードを読む時間が減りますが、その分画面を占領してしまうからです。
そのため、コメントには**価値**をもたせる必要があり、**価値**のないコメントはする必要はないとのことです。

例えば

“`
// URLをエスケープする
$url = html

元記事を表示

DoctrineとEloquent比較大全12: 集計関数の利用

day12(?)の今日は集計関数を使う方法を見ていきます。

## Doctrine

“`php
getRepository(Book::class)->createQueryBuilder(‘b’);
/** @var array $rows */
$rows = $qb-

元記事を表示

spanを使いこなしたい

# spanを使いこなしたい
spanを全然使ってこなかった私。
じゃあ何を使ってたかというと、、**div**です^^
こりゃまた使い勝手が良かったんです。
コードを調べるとき常にdivが出てたんですね。
spanなんてなんだろうとだけ思って放置してました^^

# いつ使うの?
じゃあいつ使うのってなるんですけど。
私がめっちゃええやん!!って思って使ったやつ。

# 改行したくないけどcssは違う時
私が使ってみた例を紹介します。(誰得)

レビュー機能を作ろうと思ったんです。
★★★★★←これね

大体レビューのやつって例えば★5のうち★4だと、**星4つは黄色**で**星1つは灰色**で色がついてませんよみたいな表示の仕方ですよね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2941039/979ab046-2812-1693-1f61-336734d5040f.png)

こんな感じ。

これを作ろうと思ってまず星の個数はレビューをしてもらった時にもらう数値で4つ表示さ

元記事を表示

DoctrineとEloquent比較大全11: 更に複雑な条件絞り込み(nativeQuery vs DB::raw())

day11(?)の今日はエンティティの絞り込みにより複雑な条件が必要な場合のやり方を見ていきます。

## Doctrine

“`php
1
EOQ;

$r

元記事を表示

【Laravel】with, join, selectを組み合わせてデータを取得する

## はじめに
Laravelでのwith, join, selectを組み合わせたデータ取得について書きます。
この組み合わせでデータ取得したのは初めてだったのでメモがてら記事にすることにしました。
モデルのリレーションや細かい文法などの話は省略して、
どう組み合わせて取得したかということに絞って書かせていただきます。
## 取得したいデータ
以下のようなリレーションのデータを取得したいとします。データは例です。
(分かりにくいですよね。。すみません。。)
![Monosnap 無題のスプレッドシート – Google スプレッドシート 2022-12-13 21-53-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016468/5846f1a2-46dc-5928-7671-cf220d7407a0.png)
### 説明
* missions, projects, tasks, main_teamsテーブルはリレーションがありwithで取得したい
* main_teams, sub

元記事を表示

【CakePHP】CakePHP4系のBakeコマンドでDB接続エラー(SQLSTATE[HY000] [2002] No such file or directory)

# 0.はじめに
– CakePHP4系でBakeしようとしたら、下記エラーが発生。

## 0-1.開発環境
|key|value|
|:–:|:–:|
|CakePHP|4.4.8|
|PHP|7.4.29|
|MySQL|5.7.34|
|MAMP|-|
|phpMyAdmin|-|

# 1. 試したこと
“`
$ php bin/cake.php bake all Product
“`

# 2. エラーメッセージ
– CakePHPのWelcomeページには、`CakePHP is able to connect to the database.`となっている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2940148/d5cde517-0975-06ed-4c90-6e42d6ad810e.png)

“`
2022-12-13 04:29:09 error: [Cake\Database\Exception\MissingConnectionExceptio

元記事を表示

PHP Laravel CarbonImmutableのインスタンスの時間情報を1時間追加する

:::note info
この記事は[miriwoお一人様 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/miriwo)の13日目の記事です
:::

# 概要

– CarbonImmutableのインスタンスの時間情報を1時間追加する方法をまとめる

# 方法

– インスタンスに`addHour()`メソッドで1時間追加する。

“`php
use Carbon\CarbonImmutable;

$dateTime = new CarbonImmutable(‘2023-01-01’);
echo $dateTime; // 2023-01-01 00:00:00

$dateTimeAddOneHour = $dateTime->addHour();
echo $dateTimeAddOneHour;// 2023-01-01 01:00:00
“`

– ちなみに`subHour()`を使うことで1時間引く事ができる。

“`ph

元記事を表示

axiosでPUTしたらPHPの$_POSTが空になる件

PHPではPUTメソッドの時は標準入力からデータを取る。
[PHP: PUT メソッドのサポート – Manual](https://www.php.net/manual/ja/features.file-upload.put-method.php)

いやどう考えても面倒くさい。

## axios側で対応

POSTで送信して`X-HTTP-Method-Override`ヘッダでPUTを指定すれば良いぞ。

“`js:axios v1.2.1
axios.interceptors.request.use((config) => {
const method = config.method?.toLowerCase();

if (method === ‘put’) {
config.method = ‘post’;
config.headers = {
…config?.headers,
‘X-HTTP-Method-Override’: ‘PUT’
};
}

return config;
});
“`

元記事を表示

【Laravel】ページングで検索結果が破棄される問題

# 初めに
条件検索した時にページングで次のページに行くと、

検索結果が破棄されていたエラーの解決方法です。

## 状況
ユーザーを一覧表示して名前や部署で検索する画面

“`php:ページング実装部分のhtml

{{$users->links()}}

“`
検索した時のURL
`search?name=&department=2`
検索状態でページ遷移した時のURL
`search?page=2`
期待していたURL
`search?name=&department=2&page=2`

問題は`{{$users->links()}}`で自動的に作られたページネイションに、
`name`や`department`のパラメーターが含まれていないこと。

# 解決方法
“`php:ページング実装部分のhtml

{{$users->appends([
‘name’ => $name,
‘department’ => $department,
])->links()}}

元記事を表示

Laravel Actionsのご紹介

こんにちは!

CYBIRD Advent Calendar 2022の13日目担当の@dave_cです。
前日は@whitemage_yuさんの[「Discord用のbotを作ってみた」](https://qiita.com/whitemage_yu/items/ad5c4563614a6bdd146b)でした。それも是非ご覧ください!

## はじめに

最近、個人的にもアクションクラスを幅広く使いましたので、この記事の形でLukeさんの話を要約するのに良いタイミングでした。

## Actionsとは?
簡単に言うと、1つの責任しか持たない分割されたサービスクラスです。 つまり、通常、特定のタスクを実行するためのメソッドが1つだけ含まれており、再利用できます。 当然ですが、これは`Separation of Concerns` (関心事の分離)の原則とうまく守る方法です。

うんうん、コードを見たいですね。それでは、例を見ていきましょう!

## 例: ユーザ登録
例えば、簡単なサインアップフォームがあるとしましょう。 通常、コントローラーでリクエストを受信し、データを検証してか

元記事を表示

OTHERカテゴリの最新記事