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

PHP関連のことを調べてみた2022年09月03日
目次

Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較

# Python

https://qiita.com/FukuharaYohei/items/459f27f0d7bbba551af7

# Ruby

https://qiita.com/shizuma/items/4279104026964f1efca6

# PHP

https://qiita.com/miriwo/items/da463cfcae441400381a

# Java

https://qiita.com/suema0331/items/5dde9f91671100a83905

# JavaScript

https://qiita.com/iLLviA/items/b6bf680cd2408edd050f

# Perl

https://perlzemi.com/blog/2

元記事を表示

PHPの古いtemplate engineであるTemplatePowerについて

ほぼ使われていないと思いますが、もし本当に不幸で10年前以上の技術を使われたプロジェクトの保守に任せられたら、ご参考になっていただければ幸いです。

本記事の想定対象

本記事は以下の対象を読者として想定しています。

  • PHPの初心者
  • 不幸にもPHPの古い技術TemplatePowerを使えざるを得ない担当者
  • HTML、CSS、Javascript初級〜中級の方
  • PHPのtemplate engineに変な見たことのない記述に遭遇する時
  • TemplatePowerを知りたい方
  • template engineのHTML、CSS、Javascript担当者がPHP担当者の業務を知りたい方

と、その他諸々の方も大歓迎です。

参考資料があまり見つからなかったため、錯誤、間違いがあれば、お気軽にコメントしていただければ幸いです。
何度でも修正しますので、多分これが数少ない上古時代技術の参考文献になると思います。

Template Engineとは?

Template Engine(テンプレ

元記事を表示

【Laraval】チャットワークのAPIをGuzzleクライアントを使ってメッセージを送る

## 1. チャットワークのAPIトークンを取得する

画面右上のユーザーのアイコンをクリック>サービス連携>APIトークンで確認

1. 右上のUIからサービス連携を選択

![](https://storage.googleapis.com/zenn-user-upload/9e28f77d3e85-20220902.png)

2. APIトークンを選んでをメモする
![](https://storage.googleapis.com/zenn-user-upload/3fafe219aa75-20220902.png)

## 2.先ずはpost manで叩いてみる

3. 先ずは送りたいチャットルームのルームIDを取得する(URLの#!ridの後ろの数字をコピー)

“`php
https://www.chatwork.com/#!ridxxxxxxxxxxxxx
“`

4. API URLをpost manのURLに貼る(メソッドはPOSTを設定)
![](https://storage.googleapis.com/zenn-user-upload/edbf27c3

元記事を表示

canvasデータをlaravelへ送信しデコードする

こんにちは、いしがみです。
今回は、自分がlaravelをやっているときに嵌まってしまった、canvasデータの送信とlaravel側の受信について書きます。

# 環境
Laravel v9.17.0
PHP v8.1.7

# Javascript側の送信

今回は、保存ボタンをクリックしたときにcanvasに描かれたデータを、base64にエンコードし、laravelへと送信する。laravel側で保存用のAPIを用意しておき、そちらに送信する。
“`Javascript:main.js
saveButton.addEventListener(‘click’, () => {
//canvasデータを指定された画像フォーマット形式のdataURIを返す
var canvasData = canvas.toDataURL(“image/png”);

const fd = new FormData();//送信データ
const xhr = new XMLHttpRequest();//リクエストの作成

//送信先の指定
xh

元記事を表示

【jQuery】append()にクソ長文字列を書くのをやめませんかみたいな話

### この記事の書き方はXSSできてしまうので危険です。
@tadsan**さんよりこのコードだとXSS攻撃されてしまうというご指摘を受けました。**
**こちらの記事のコードで実装するのは危険です。**
戒めのために取り消し線を付けて残しておきます。
タイトルのようなことがしたい場合[こちらのコメント](https://qiita.com/simoyama2323/items/1e93f9c242692c26166c#comment-8e165dfa21951934534d)のような実装をしてください。

### 環境
PHP 8.1
jQuery 3.6.1
PHPSTORM

### 本文

~~例えば要素Aを加工して同ページの要素Bにappend()するときこんなコード書いていませんか。~~

“`html

Hello

World

2022 0902 15:00

元記事を表示

【Laravel】条件によってバリデーションの内容を変更したい

# 実現したいこと
氏名・電話番号など入力項目が複数ある、入力フォームでデータベースの必須カラムの論理値によって、バリデーションルールを変更したい。

# テーブル構成
テーブルは以下のようになっており、カテゴリーテーブルの必須か否かでバリデーションチェックを行い、問題なければ、ユーザーテーブルへデータを保存します。

カテゴリーテーブル(categories)
| ID | name | required |
|:-:|:-:|:-:|
| 1 | 氏名 | true |
| 2 |性別|true|
| 3 |住所|true|
| 4 |電話番号|false|
| 5 | メールアドレス |false|

ユーザーテーブル(users)
|  ID | name | gender | address | tel | email |
|:-:|:-:|:-:|:-:|:-:|:-:|
|   |  | |  |  | |

# 結論
バリデーションチェックは、Validatorで行いました。

Validatorについては以下のページを参考にさせていただきました。

https://q

元記事を表示

UTF-8で全角を2、半角を1とカウントしたい場合はmb_strwidthを使う

# 概要

めったに必要な場面は無いけれど、UTF-8で入力した文字列をShift-JISで送信する際に、上限バイト数の制限が必要な場面があり文字数が揃わなかったので迷いました。
UTF-8は可変バイト数?らしく1文字3バイトとカウントされたりする。

## 関数

**strlen** = 文字列のバイト数を取得(文字コードによって変わる)

**mb_strwidth** = 文字列の幅を取得(全角は2、半角は1とカウント)

(追記:2022-09-03 0:01)コメントいただきましたが、 `mb_strwidth` だとギリシャ文字、ロシア文字などは全角の文字でも1とカウントされるみたいです。
日本語以外や、日本語でも記号などが含まれる文字列の場合は、想定した動きにならない可能性があるのでご注意ください。

# strlen

## 文字コードがShift-JISの場合

“`php:php
echo strlen(“あいうえお”);
// 10

echo strlen(“ABCDE”);
// 5
“`

## 文字コードがUTF-8の場合

“`php:ph

元記事を表示

Laravelでweb.phpの変更がキャッシュで反映されない場合のtips

## バージョン
– Laravel v9.21.6
– PHP v8.1.8

## やりたいこと
Laravelのルーティングが反映されない場合、`bootstrap/cache/routes-v7.php`を消すと反映されるようになります。
“`
root/
├ app/
├ bootstrap/
└ cache/
 ├ config.php
 ├ packages.php
 ├ services.php
 ├ routes-v7.php // このファイルを消す
“`

元記事を表示

PHPで保守しやすいコードを書くサンプル① 「変数に名前つける」

# 背景
今年の上半期から、界隈で話題に登っているミノ駆動様の「良いコード/悪いコード」を拝読しました。
類にもれず、こういうのをもっと実践して取り組んで行けば、長期的な開発速度はもっと上がっていくに違いない!と意気込んでおります。

# 概要

* そんな背景のもと、該当書籍は主にjavaによる開発事例の記載となっているため、自分の主戦場がPHPであることもあり、「じゃあちょっと自分でPHPだったらどうなるかは手を動かしてみるか」となった次第です。
* とりあえず頭から手を動かすこと、を主眼においているため恐ろしく簡単だったり、効率がイマイチだったりするところもありますがそこはご容赦頂きたい次第です。(回を重ねていくつもりではあるので、徐々にそこは解消されていければと考えています)

# では本題

* 今回はいちばん簡単な「変数に名前を付ける」ていうやつ
* 改めてやる意味があるのかというところですが、律儀にやっていきます

## NG

“`
$val1 = 10000;
$val2 = 100;

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのファイル入出力の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのファイル入出力の比較

# Python

https://qiita.com/onishi_820/items/f3068d5533a1f4f5ae39

# Ruby

https://qiita.com/Morio/items/8f0dc0801cfcb98d8269

# PHP

https://qiita.com/Morio/items/1deca77b370851ed914f

# Java

https://qiita.com/DeraTosev/items/77cd689da4426b892793

# JavaScript

https://qiita.com/shirokuman/items/509b159bf4b8dd1c41ef

# Perl

https://perlzemi.com/blog/20

元記事を表示

Cloud9でphpMyAdminを使用する方法

## 環境
PHP 7.3.30
laravel 8.83.23
mysql Ver 14.14

## 方法
1. mysql -u root -p
2. update mysql.user set password=password(‘root’) where user=’root’;
2. exit;
2. cd your_project/public
2. wget https://files.phpmyadmin.net/phpMyAdmin/4.8.3/phpMyAdmin-4.8.3-all-languages.zip
2. unzip phpMyAdmin-4.8.3-all-languages.zip
2. public 以下に回答されたフォルダ名をphpMyAdminへ変更
2. cd ../
2. php artisan serve –port=8080
2. Previewを表示
2. URLの末尾に/phpMyAdmin/index.phpを追加して表示
2. .env内を修正する

元記事を表示

配列にid的なのつけたいな

## こういう配列
“`
$tests = array(
array(
‘price’ => 100,
‘name’ => ‘hoge’),

array(
‘price’ => 200,
‘name’ => ‘huga’),

array(
‘price’ => 300,
‘name’ => ‘piyo’)
);

var_dump($tests);
“`
indexあるけど、1から始まるid付けたい
## こうした
“`
foreach($tests as $index => $test){
$id = 1 + $index;
$tests[$index] = array_merge($test,array(‘id’=>$id));
}

var_dump($tests);
“`
実行結果
“`
array(3) {
[0]=>
array(3) {
[“price”]=>
int(100)

元記事を表示

Log::Debugってobject出力できないのかい

## Log::Debugはobjectを出力できない
中身がobjectの変数を
“`
Log::debug($hoge)
“`
という感じにそのまま出力しようとしたら
“`
Object of class 〇〇 could not be converted to string
“`
ってエラー出た
`laravel.log`でログ見たいのに…

## 解決法
“`
Log::debug(print_r($hoge,true))
“`
のように、`print_r()`を挟む事によって解決

trueを忘れると、変数の中身ではなく、中身の有無(boolean)で表示されてしまうので注意

元記事を表示

LaravelDoctrineでXMLマッピング

# これはなに?
LaravelをFWとして採用した際に通常はEloquentをORMとして採用することがほとんどだとおもいます。
しかし、例えばレガシーなDB設計になっているWEBアプリケーションをLaravelで作り直す
などの必要が生じた場合や、リポジトリパターンを活用して重厚なシステムを構築したい場合
Eloquentでは厳しい場面も出てきます。
その際に第二の選択しとしてDoctrineというORMがあげられます。
このORMをxmlマッピングにて使用すると、DBに関する関心事と実際の業務ロジックを限りなく分離させることが可能となります。

この記事では、公式のドキュメントからのみではわかりづらいことが多い
LaravelDoctrineのXMLマッピング
を実現するまでの手順を記載していきます。
尚本記事内で紹介している手法を実際に使用しているリポジトリも紹介しておきます。

https://github.com/yuichi-sano/ddd-laravel-doctrine

↑をバンドルしているrepository

https://github.com/yuich

元記事を表示

Composerについて(概要からインストール方法まで)

# Composerとは
PHP向けのソフトウェアパッケージ・ライブラリの依存関係を管理する、パッケージ管理システム

## そもそもパッケージて何
システム開発を行う際に、便利な仕組みや関数をまとめたもの
標準のphpのみでの開発は難しいので、大体パッケージを利用しているのが常

もしパッケージがなければ、ここに書かれている内容を全て開発者自身がコードを書かなければいけないので、
私たちは常にパッケージの恩赦を受けながら開発している(と思う)

Composerはこのようなパッケージを管理するためのツール

## Composerのメリットて何

##### ・使用しているパッケージをファイルで管理できる
「パッケージ管理」なので、上記で説明したパッケージをファイルで管理できる
パッケージを取得したあとに、パッケージにバグや脆弱性が発覚し作成者がパッケージを更新することがある

手動でダウンロードしてきたパッケージだと、定期的にアップデート情報を確認して、
再ダウンロードするという作業が必要になるが、Composerで取得したものであるなら、updateコマンドを実行するだけで、
使

元記事を表示

laravelでのcomposerとは何か?

1、composerとは何か?
laravelにおいて使用可能な便利なフレームワークやライブラリを管理するシステムです。
composerがあることで、例えばAというライブラリをダウンロードする際に他に必要なライブラリも自動的にダウンロードしてくれるようになります。
(詳細:https://qiita.com/niisan-tokyo/items/8cccec88d45f38171c94)

2、laravelでcomposerが関連しているファイル・フォルダ

composer.json
インストールするパッケージ一覧を表示するファイル

composer.lock
実際にインストールされたパッケージの具体的なバージョンなどの情報が自動的に記録されるファイル

vendor
インストールしたパッケージのソース本体が格納されたディレクトリ

composer.phar
composerの実行ファイル。
このファイルをもとにしてcomposerのコマンドが実行される。
そもそも拡張子.pharのファイルはphpのアーカイブファイル(複数のファイルやフォルダをまとめたファイル)のこと。

元記事を表示

artisan したら PHP Parse error: syntax error, unexpected token “)” と Class “DOMDocument” not found が出た

Laravel のプロジェクトを人任せにしていたが自分の所でも開発をしなければならなくなったので、マイグレーションを作りたく artisan を使ってみたが、

“`shell
$ php artisan make:migration add_hoge_to_fugas –table=fugas
PHP Parse error: syntax error, unexpected token “)” in /home/test/projects/hogehoge-system/vendor/symfony/console/SignalRegistry/SignalRegistry.php on line 37
“`

こんなエラーが出ますね。これは PHP のバージョンじゃなかろうか。WSL2 にはいってるのは

“`shell
$ php -version
PHP 8.0.17 (cli) (built: Mar 20 2022 17:04:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.17, Copyr

元記事を表示

Laravel 複数ページで共通データをフロント側に渡す方法

# 今回やりたいこと
– Laravelで色んなページでよく使うデータをController毎にデータ定義して、フロント側に返すのではなく、共通でサーバ側からフロントへ渡せるようにしたい。

# どうやって実現するのか
– **Laravel view composer**(**ビューコンポーザ**)というもので、下記公式ドキュメントの引用文を読むと実現できそうなので使ってみる。

> ビューコンポーザは、ビューをレンダーするときに呼び出すコールバックまたはクラスメソッドです。
ビューをレンダーするたびにビューへ結合するデータがある場合、ビューコンポーザを使用すると、そのロジックを1つの場所に集約できます。
ビューコンポーザは、アプリケーション内の複数のルートかコントローラが同じビューを返し、常に特定のデータが必要な場合にきわめて役立ちます。

# やってみる

## おおまかな実装の流れ
1. サービスプロバイダファイルの作成
2. `app.php`へSeriviceProviderの登録
3. ●●Composerクラスを作成
4. SeriviceProviderへの設定追加

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの関数定義の比較 (メソッド定義・サブルーチン定義なども)

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの関数定義の比較 (メソッド定義・サブルーチン定義なども)

# Python

https://qiita.com/simonritchie/items/0f7b3768031dda834907

# Ruby

https://qiita.com/shizen-shin/items/dd41d1f0176a5e764f9f

# PHP

https://qiita.com/miriwo/items/a33688165a5f36ea8e76

# Java

https://qiita.com/takahirocook/items/5bfe43576d87a2a4006c

# JavaScript

https://qiita.com/tomcky/items/988fc5f56d019e9dc097

# Perl

ht

元記事を表示

CakePHP4でDebugKitツールバーが404エラーになる解決法

# はじめに

CakePHP 4.4.3 にアップデートしたところ、いつの間にか DebugKit toolbar が表示されなくなっていました

– GET:
– 404 Not Found

表示するように対応します

![cakephp_debug_kit_404.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586387/62e0a665-684f-d1c5-0a68-1ff859cc4938.png)

# 結論

:::note info
routes.php に DebugKit の指定すれば OK
:::

“`php
return static function (RouteBuilder $routes) {
$routes->scope(‘/’, function (RouteBuilder $builder) {

元記事を表示

OTHERカテゴリの最新記事