PHP関連のことを調べてみた2021年01月07日

PHP関連のことを調べてみた2021年01月07日

xdebug version 3になって動かなくなった

# はじめに

新年になったので、開発環境のDockerをビルドし直したら、xdebugでのステップ実行ができなくなった。
調べてみると、xdebugのVersion3になって設定項目名が変更されてしまったため、以前の設定が無効になってしまったのが原因でした。

# TL;DR

以下の設定で動きました。
ちなみにデバッガ(IDE=phpstorm, vscode)の方の待受ポートは9003に合わせる必要があります。

“`ini
xdebug.log=/tmp/xdebug.log
xdebug.mode=develop, debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
“`

# v2時代の設定

たぶん、こんな設定がインターネットで検索するとでてくると思います。こ

元記事を表示

初心者がLaravelでアプリをつくるまで

プログラミングスクールに通い始めて2ヶ月、、
あと1ヶ月で予定の3ヶ月を終えてしまうけど、全然ポートフォリオに使う予定のアプリが完成しない、、
とりあえず、全然連絡の取れなかったメンターの方を変更していただいてようやく方向性が定まってきた。

とりあえず、つくってみるアプリは前々から少し考えていた、アンケートを投稿できるモノにした。
あまり難しそうなものを考えると心が折れそうなので、、

内容としては、登録してくれたユーザが誰でもアンケートを投稿できて、他のユーザに回答してもらえて回答の集計を取れるようなものにしようかと、、
最初はとりあえず型だけつくって、後から時間があれば色々な機能を搭載していければいいかなってくらいです。

まず言われた通り、基本設計とテーブル定義を調べながらやってみたけど、やり方が全然わからないのでとりあえずシートに書いてみました。

機能一覧↓
![018496678e2a5cd8a337d937404349fd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1008402/

元記事を表示

PHPのSJIS系文字エンコーディングとエイリアスを表にまとめてみた

# はじめに
※ 本記事ではShift_JISを拡張した文字エンコーディングを**SJIS系文字エンコーディング**と記載しています。

Shift_JIS、Shift-JIS、SJIS、SJIS-win、CP932、MS932、Windows-31J、MS_Kanjiなどなど、、、
SJIS系文字エンコーディングってたくさんありますよね。
「Shift_JISでcsv下さい」って言われたからShift_JISに変換したら「髙」が〜「ハイフン」が〜と言われたことある方は少なくないと思います。

[サポートされる文字エンコーディング](https://www.php.net/manual/ja/mbstring.supported-encodings.php)に記載されている中でよく使用するSJIS系文字エンコーディングは、SJIS、SJIS-win、CP932の3種類だと思います。

[サポートされるエンコーディングの概要](https://www.php.net/manual/ja/mbstring.encodings.php)のShift_JISの説明と注記に「IANA の定義によ

元記事を表示

PHPの??ってなに?

# まだ現場経験が浅いときに思ったこと

「??ってなに?」

現場経験3か月頃、初めて下記の処理を見たとき、一体どういう処理なのか?と
悩んだ覚えがあるので、同じような方向けに記事にしました。

“`
$hoge = $a ?? null
“`

下記のような三項演算子なら知っていましたが、「??」はあまり馴染みない方も多いはず。。

“`
$a = 1;
$b = 2;

$max = $a > $b ? $a : $b;
echo $max;
“`
“`
実行結果
2
“`

# 結論

“`
$hoge = $a ?? null
“`

これは下記の処理と同じことをしています。
aに値があればaの値を代入し、無ければnullが入るようなイメージです。

“`
if ($a) {
$hoge = $a;
} else {
$hoge = null;
}
“`

以上、短い記事でしたがどなたかの参考になれば幸いです。

元記事を表示

Win10でapacheサーバーに、PHPをインストール

# PHPのダウンロード
以下サイトからダウンロード、今回試したのは、PHP8

https://www.php.net/

`自分がサーバーにしてるマシンが32bitなので、`
Download -> Windows downloads
`VS16 x86 Thread Safe (2021-Jan-06 00:27:59)` の zip をダウンロード

# PHPをインストール
ダウンロードした zip を展開して、任意のパスに配置
`C:php とかに配置`

# 環境パスの設定
PHPを配置したパスを、環境パスの path に設定する

# PHPの設定ファイルを調整する
## iniファイルを作成
../php/`php.ini-development`が展開したフォルダに含まれているので、
複製して `php.ini`にリネームしてから編集する

### タイムゾーンを設定
“`
; date.timezone =
 ↓
date.timezone = “Asia/Tokyo”
“`

### エクステンションフォルダパスを設定
“`
; extension_d

元記事を表示

ビデオ管理アプリケーションをつくる

# はじめに
phpの現場に入る前に予習しようとしてこの教材を買ったけど結局難しくて挫折してプロジェクトで半年死ぬような目にあったけどいまなら雪辱をはらす

# 参考
https://www.udemy.com/course/symfony-4-web-development-from-beginner-to-advanced/learn/lecture/13003870#overview

>composer create-project でプロジェクトを作成すると、
最新の Symfony が組み込まれるため、記述通りには動かないケースが出てきます。「Unrecognized option “cookie_samesite” under “framework.session”」というエラーが表示された場合は、config/packages/framework.yaml ファイルを開き、そこにある「cookie_samesite: lax」という文をコメントアウトして下さい。これで server:run で実行できるようになります。

“`console:プロジェクト作成
# ru

元記事を表示

「備忘録」パスワード保護Excel作成と読込自動化検討のメモ

>検討中の要件で、Workbook全体のパスワード設定&暗号化のExcelファイルの作成と読込の自動化の検討が必要になったため、現状のシステムで埋め込めるのかを調べるために整理しておいた内容です。

> 調査・検証内容上、間違いが、もっといい案があるかもなので、参考までにみてください。(筆者も、後ほど時間あれば、もっと検証したいと思ってます)

> もし、過ちがあれば、コメントいただけると嬉しいです。

# 結論

### パスワード保護Excelの作成には、nodeベースの「Secure Spreadsheet」を使う

https://github.com/ankane/secure-spreadsheet

“`sh
npm install -g secure-spreadsheet

# CSV to Password Protected Encrypted XLSX
cat input.csv | secure-spreadsheet –password secret > output.xlsx

# XLSX to Password Protected Encrypte

元記事を表示

paizaのレベルアップ問題集「じゃんけんの手の出し方 (paizaランク A 相当)」 をPHPで解きたい

paizaのレベルアップ問題集「じゃんけんの手の出し方 (paizaランク A 相当)」 をPHPで解いてみました。
自力では解けなかったので、ググりまくって考え方を導き出しましたが、PHPで書かれている記事は見当たらなかったため、記事にしました。
![スキルチェック見本問題セット(PHP編) 提出結果 – レベルアップ問題集 – プログラミング学習サービス【paizaラーニング】 – paiza.jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/997222/3222acca-4e63-4d7f-d431-aebdde5e719a.png)

# 実現したいこと
paizaのレベルアップ問題集「じゃんけんの手の出し方 (paizaランク A 相当)」 をPHPで解きたい
https://paiza.jp/works/mondai/skillcheck_sample/janken?language_uid=php

# 開発環境
## OS
“`
% sw_vers
ProductNa

元記事を表示

Doctrineで主キーの無いテーブルに対してSELECTをかける

# データを取りたいが重複したデータ(先頭データ)しか取れない

コントローラ内で、

“`KaraagekunController.php
$this->KaraagekunRepository->findBy([‘id’ => $id]);
“`

としてRepository経由でfindByしてデータを取ろうとしたら、
同じレコードが3件返ってきていた。
件数は3件で間違っていないものの、同じレコードが返ってくるのはおかしいと思って調べました。

# doctrineでは主キーの無いテーブルを推奨していない
みたいです。
なので、主キーの無いテーブルに対してレコード取ろうとしてて、
doctrine側でレコードが認識できずに変な値が返ってくるみたいですね。

# 解決方法
Repository内でQueryBuilderを使って取るしか方法なさそうでした。

“`KaraagekunRepository.php
public function getData($id) {
return $this->createQueryBuilder(‘t’)
->s

元記事を表示

PHPの変数にHTML要素を格納する

# 目的

– HTMLのtable要素の一連の文字列をPHPの変数に格納する時に若干詰まったので方法をメモ的にまとめておく。

# 方法

– `””`(ダブルクオート)ではなく`”`(シングルクオート)でくくるようにする。(`””`でくくるとHTML要素のクラス名の指定部分などと競合してエラーになる。どうしても`””`でくくりたいなら文字列として扱うHTML要素の中の`””`を`\`でエスケープする。)

– シングルクオートでHTMLの要素をくくる方法を下記に記載する。

“`php
$content = ‘

info_1 info_2
Tokyo Kanagawa
Osaka Hyougo

‘;
“`

– どうしてもダブルクオートでHTMLの要素をくくる時は下記のように要素内の`””`をエスケープして文字列として変数に格納する。

“`p

元記事を表示

PHP cheat sheet

This PHP cheat sheet provides a reference for quickly looking up the correct syntax for the code you use most frequently.

[![Php cheat sheet quick reference guide](https://dev-to-uploads.s3.amazonaws.com/i/ajre7zpak95n3s7clku2.png)](https://quickref.me/php)

元記事を表示

メール関連 勉強メモ

## メール関連の勉強メモ
### MTA(メール転送エージェント:Message Transfer Agent)
* ネットワーク上でメールを転送・配送するソフトウェア。
* メールを受け取って次の適切な配信先を決定するのが主な役割
* 配信先への送信・転送はMDAが行う
* 利用者とのメール送受信やMTA間のメール送受信にはSMTP通信プロトコルが標準的に用いられる。
* SMTPサーバーのプログラムの1つ
電子メールクライアント(MUA)・・・メールソフトのこと

#### 種類
* Sendmail
* Courier-MTA
* Postfix
* qmail
* Exim
* Apache James
* Microsoft Exchange Server

### qmail(きゅーめーる)
* メールサーバーソフトウェア・MTA
* Sendmailの問題点を解消するためにつくられた。

### 特徴
– 設定がシンプル
– Sendmail,Postfixと互換性なし
– セキュリティが強固

元記事を表示

LaravelのユニットテストでDBにないエラーを明確にする

すみませんが、日本語訳はあとにします。
### Problem

When `seeInDatabase` asserting was failed, I can’t not known where the path of properies is not match.

Example: With bellow test, I will receive the bellow message.

##### Test code:

“`php
$this->seeInDatabase(‘les_knowledge’, [
‘lesson_id’ => $lesson->id,
‘number’ => 1,
‘content_en’ => ‘~ years old DIFFFFFFFFFF’,
‘explanation_en’ => ‘In Japan, you are born as a 0 year-old and turn 1 on your first birthday.’,
]);

“`

元記事を表示

Laravelで明確配列タイプをする

すみませんが、日本語訳はあとにします。
### The origin code
“`php
public function get_user_badge(array $user_ids, array $course_ids, Carbon $from, Carbon $end, $direction = ‘desc’){}
“`

### Refactoring 1: clarify array type
##### Util Classes
“`php
use Illuminate\Support\Collection;

class IntegerCollection extends Collection
{
public function __construct(int …$values)
{
parent::__construct($values);
}
}

class UserIds extends IntegerCollection {}
class CourseIds extends IntegerCollection {}
“`

##### T

元記事を表示

Re-wirte test-case with magic numbers 1, 2, 4

すみませんが、日本語訳はあとにします。
##### The original code
“`php

private client_fixture(){
return Client::firstOrFail();
}
private message_fixture($client, $count = 1, $adjust_min_version = 0, $adjust_max_version = 0){
return factory(Notification::class, $count)->create([
‘app_version_min’ => $client->version + $adjust_min_version,
‘app_version_max’ => $client->version + $adjust_max_version,
]);
}

public function it_returns_only_messages_fo

元記事を表示

Laravelコードを見直す

すみませんが、日本語訳はあとにします。
After reviewing the code for the new team members, I found long/wrong codes. I write it down here.
## Content
* [1. Use default params when getting value from request](#write_better_laravel_code__chapter1)
* [2. Use Eloquent *when* function](#write_better_laravel_code__chapter2)
* [3. Use Eloquent *updateOrCreate*](#write_better_laravel_code__chapter3)
* [4. Use map instead of bundle if/else](#write_better_laravel_code__chapter4)
* [5. Use collection when you can](#write_bett

元記事を表示

LaravelでFormRequestを使ってバリデーションする方法

Controllerが肥大化(MVCの宿命)してしまうのを少しでも解決するために、バリデーションはFormRequestを使って処理するのが良さそうだったので、自分用のメモとして使い方をまとめてみた。

# FormRequestとは
バリデーションルールを外部クラス(FormRequestクラス)にまとめることができ、任意の処理で呼び出すことができる
FormRequestを下記のようにDIしてあげると、バリデーションが通った時だけコントローラー内の処理が走るようになります
このようにバリデーションを外部クラスで処理することでControllerでは自分の処理に専念することができる

“`php
public function store(StoreRequest $request)
{
// バリデーションが通ったときにここの処理が走る
}
“`

# 使ってみる
`artisan`コマンドで作成できる

“`bash
php artisan make:request StoreRequest
“`

“`php:StoreRequest.php
namespace

元記事を表示

PHP学習備忘録

去年の10月から新人プログラマとして開発に挑戦しています。
以前は運用系の業務だったため、自分で何かを作って動かすのはほぼ未経験です。
今までは、研修でJavaを覚えてきましたが、新たにPHPを覚えることになりそうなので、PHPについて色々調べてみました。
なかなか物覚えはよくない方なので、自身の備忘録としてここに残しておこうと思います。

#PHPについて

PHPとは正式名称は「Hypertext Preprocessor」と呼ばれているとのことです。
ハイパーテキストって書かれている通り、WEB開発で非常に使われている言語になっているようです。
(私はPHP初心者なのでまだ細かいことはわかりませんが…)
簡単にWEBサイトを作成できることでおなじみの「WordPress」もPHPがベースになっています。

#PHPの記述

PHPはHTMLの中に記述できます。拡張子は.phpとなります。
HTML内で記述する際はbodyタグの中に書きます。

HTML文書内に記述する場合、文頭は、が締めとなります。
ただ、PHPだけで記述されたphpファイルは?>で締めな

元記事を表示

Laravelはじめました

#Larave(ディレクトリ構成)

本日からLaravelを触り出したので自分の勉強記録として投稿していこうと思う。

簡単にディレクトリ構成から勉強。
(フレームワークを余り触ったことがないので混乱)

ディレクトリ構成

| 1 | 2 |
|:-:|:-:|
| app | アプリのメインとなるところ |
| bootstrap | 初期処理やキャッシュ |
| config | アプリの設定 |
| database | データベース(マイグレーション) |
| public | 画像,JS,CSS |
| resources | blade(HTML的な) |
| routes| アプリのURL設定など |
| storage | セッションやログ |
| tests | テスト用 |
| vendor | Composerの依存内容 | ()

# 設定ファイル(隠しフォルダにあり)
– codeフォルダの歯車マーク押して、show hidden filesをクリック
– .envフォルダを開く

“`言語:ph

元記事を表示

PHP 数値の3桁の区切りカンマを打つ

# 目的

– PHPで数値の3桁の区切りカンマを打つ方法まとめる

# 情報

– 下記サービスを用いて動作確認を実施
– [https://paiza.io/ja](https://paiza.io/ja)

# 方法

1. number_format関数を使用する。
1. 例えば「1000」を「1,000」のようにカンマを打ってほしい場合、下記のようにする。実行すると「1,000」が出力される。

“`php
echo number_format(1000);
“`

1. 変数`$num`に格納された数値の3桁区切りのカンマを打ち、再び変数`$num`に格納する場合は下記のようにする。

“`php
$num = 1000;

$num = number_format($num);

echo $num;
“`

# 参考文献

– [https://www.php.net/manual/ja/function.number-format.php](https://www.php.net/manu

元記事を表示

OTHERカテゴリの最新記事