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

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

Laravel テストコードを書いてみよう

# 目的

– Laravelのフューチャーテストコードの書き方をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.8 | Homwbrewを用いて導入 |
| Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaee

元記事を表示

[Laravel] Composer require で依存関係によるエラーを回避する方法

## 概要

Composer でインストールを行う際、以下のようなエラーが出た時に対処した方法をまとめる。

“`
Installation failed, reverting ./composer.json to its original content.
“`

## 環境

Laravelの versionは `6.18.40`。

“`
$ php artisan –version
Laravel Framework 6.18.40
“`

## 解決方法

本エラーはインストールするライブラリが他パッケージで別versionで使用している依存関係によるエラーであるため、`composer.json`でインストールを行うversionを指定することで回避可能。
今回は、`laravel/ui`を`1.0`として追記している。

“`composer.json
“require”: {
“php”: “^7.2”,
“fideloper/proxy”: “^4.0”,
“laravel/framework”:

元記事を表示

[PHP]文字列を固定長の他の文字列で埋める(マルチバイト対応)

文字列を規定の桁数になるまで任意の文字で埋めるために、PHPのstr_pad()を使うことがあるかと思います。
ただし、以下のようなマルチバイト文字をstr_pad()にかけて指定した桁数の文字列を出力しようとしても、バイト数で計算されるため意図した通りに出力されません。

“`php
echo str_pad(‘東京’, 8, ‘●’, STR_PAD_RIGHT).PHP_EOL;
echo str_pad(‘名古屋’, 8, ‘●’, STR_PAD_LEFT).PHP_EOL;
echo str_pad(‘大阪’, 8, ‘●’, STR_PAD_BOTH);
“`

出力結果は以下の通り…
8桁の文字列が出力されてほしいところですが、先に述べたように意図した通りになりません。
その上、文字化けになってしまいました。

“`html
東京�
名古屋
�大阪�
“`

そこで、マルチバイト文字にも対応したmb_str_pad()を作成しました。
使い方はstr_pad()とほとんど変わりありませんが、バイト数ではなく文字数で計算するようになっています。

“`php

元記事を表示

【webpack】sassをバンドルする際に出たエラーの対処

##環境
PHP 7.3.8
Laravel 6.18.40
webpack 4.27.1

## TypeError: text.forEach is not a function … というエラー

Docker開発環境下で、`npm run watch-poll` でビルドを試みるも以下エラーで失敗する。

“`
ERROR in ./resources/scss/app.scss
Module build failed (from ./node_modules/css-loader/dist/cjs.js):
TypeError: text.forEach is not a function
at /var/www/node_modules/extract-text-webpack-plugin/dist/loader.js:145:16
(略)
“`
結論から言うと、sassのバンドルには`css-loader`、`node-sass`、`sass-loader`、`style-lo

元記事を表示

PHP date UNIXタイムスタンプ

# date
構文
date(フォーマット, UNIXタイムスタンプ)
[例]
date(‘Y-m-d’, time());   2020-09-28
Yは、年を4桁で表します。
mは、月を2桁で表します。
dは、日を2桁で表します。

[例2]
date(‘H:i:s’,time();   21:51:30
Hは、時を2桁で表します。
iは、分を2桁で表します。
sは、秒を2桁で表します。

[例3]
date(‘l’, time());   Monday
lは、曜日をを表します。

[例4]
date(‘W’, time());   20
一年に内の何週目かを表します。

[例5]
echo date(‘Y-m-d l’) . PHP_EOL;
現在日時を表示したい場合は、time()を省略する事が可能です。

その他も沢山あるみたいなので、必要な時に調べて使いましょう。

元記事を表示

【PHP】【エラー】Notice: Array to string conversion in~

PHPについて学習内容を備忘録としてまとめます。
実装中に起きたエラーについて解決法まで記載します。

下記のようなマイページでユーザーの投稿数を表示させる際にエラーが発生しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/119f244e-d121-2516-1aca-87535e87ee5f.png)
#起きた問題
ユーザーの投稿数を取得し表示したら下記のようなエラーが発生しました。

“`
Notice: Array to string conversion in C:\xampp3\htdocs\user\user_mypage.php on line 22
Array
“`
投稿数を表示させる箇所に`Array`と表示されおり、投稿数は表示されていませんでした。
該当のコードはこちらになります。

“`php
投稿数:’.get_user_count(‘post’,$current_user[‘id’]).’

‘;

元記事を表示

SJIS-macに変換したはずなのにSJIS-winになる

# SJIS-macに変換したはずなのにSJIS-winになる

StackOverflowに[mb_detect_encoding does not detect SJIS-mac?](https://stackoverflow.com/questions/57984049/mb-detect-encoding-does-not-detect-sjis-mac/63772728)という投稿がありました。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/9b35590b-72a4-975f-769e-08ac642d00cd.png)

ということらしいので、[UTF-8からSJIS-macに変換](https://3v4l.org/Dm4sA)してみましょう。

“`php
$utf8Str = “❶❷❸❹❺”;

$sjisStr = mb_convert_encoding($utf8Str, ‘SJIS-mac’);

echo(mb_detect_encoding($sj

元記事を表示

PHP キー、値で配列をソートしよう

# sort rsort
## sort
配列の値を小さい順に並び変えてくれます。
## rsort
配列の値を多い順に並び変えてくれます。

※キーがある場合は消されて連番になってしまいます。

そこで!↓
# asort arsort
asort arsortはキーを保持したまま、並び替えてくれます。

# ksort krsort
ksort krsortはキーの方を並び変えてくれます

# array_column
引数に渡した配列の中から、単一のカラムを取り出すための関数です。
[例]
array_colimn($配列, $カラム)
![スクリーンショット 2020-09-28 18.40.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663122/1a795f69-0de0-3ab4-8b1f-81206cfd44af.png)
![スクリーンショット 2020-09-28 18.40.52.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

【PHP】文字列を固定長に揃える(マルチバイト文字)

## はじめに
マルチバイト文字列を指定の長さで揃えたい

## sprintf
“`php
sprintf(‘%-10s’, ‘abc’); // “abc ”
sprintf(‘%-10s’, ‘あいうえお’) // “あいうえお”
“`
sprintfではマルチバイト文字のときに上手く対応できない

参考:[PHP: sprintf – Manual](https://www.php.net/manual/ja/function.sprintf.php)

## str_pad
“`php
str_pad(‘abc’, 10, ‘ ‘,STR_PAD_RIGHT) // “abc ”
str_pad(‘あいう’, 10, ‘ ‘,STR_PAD_RIGHT) // “あいう ”
“`
バイト数換算で計算されるので、マルチバイト文字の場合、指定が上手く対応できない

参考:[PHP: str_pad – Manual](https://www.php.net/manual/ja/function.str-pad.php)

## 以下のような関数を作

元記事を表示

LINEBOTでFlex Messageをつかってリッチに見せよう

![スクリーンショット 2020-09-28 2.06.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644490/4a8c36e2-f613-a586-9788-176483570309.png)
以前飲食店の予約LINE BOTを作成したのですが、Flex Messageがかなり好評だったので共有したいと思います
Flex Messageってこんなやつでとりあえず見た目が洒落になる
カスタマイズ性も抜群だからLINE BOT作るときは是非使ってみて欲しい

公式にシュミレータがあるので、そちらを参考にして
この記事のコードを少し変えれば簡単にリッチなメッセージを楽しめると思いますー
https://developers.line.biz/flex-simulator/

公式ドキュメントはこちらから
https://developers.line.biz/en/docs/messaging-api/
リッチメニューは完全にGUIでできるので下のページを確認してください
https://mana

元記事を表示

Laravelディレクトリ構成+DBマイグレーション

今回はLaravelディレクトリ構成+DBマイグレーションを説明していきます。

#ディレクトリ構成
![image.png](https://i.gyazo.com/2fb41000ba954cf5b2cfd12cf52fcd04.png)

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

#マイグレーション
##マイグレーションとは
SQLを直接使わなくても、データベースを管理できるLaravelの仕組みです。
##マイグレーションファイル

元記事を表示

AWSとPHPでTwitterOAuthでログイン機能を実装

TWitterOAuthでログイン機能実装が思ったより苦戦したので、エラーになったポイントを伝えていきます。
AWS上でやっていきます。
#AWSでComposerをインストール

①下記手順を実施してPHPを入れる。(実施済みの方は飛ばす。)
[AWS EC2 AmazonLinux2 PHPをインストールする](https://qiita.com/miriwo/items/7d94303e7185e4118f52)

②公式のインストール方法に記載されているコマンドを実行してcomposer本体を取得する。
コマンドは変更になる可能性があるので最新のコマンドは公式ページをご確認してください。

“`
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘795f976fe0ebd8b75f26a6dd68f78fd3453ce79f32ecb33e7fd087d39bfe

元記事を表示

OSS PHP SDKを使ってSwooleで機能を掘り下げる

**Swoole**はPHPの非同期・並列リクエストのための高性能なネットワーク通信エンジンです。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/swoole-based-simple-http-server-with-oss-sdk_347088)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/97250e97-d561-6f7f-abef-27747cf0646e.png)

#序章
Swooleは、最近ではコーダーの世界で新たな “最高の言語 “として定着しています。

公式に説明されているように、PHPの非同期・並列リクエストのための高性能なネットワーク通信エンジンです。そのコンパイルは、PHPの非同期マルチスレッドサーバ、非同期TCP/UDPネットワーククライアント、非

元記事を表示

Laravel8.0入門してみた感想

ララベル.かわいいなまえだね.
でも「Web職人のためのフレームワーク」みたいなキャッチコピーでかっこいいね.

ちゅき(._.)

というわけで入門した感想を述べます.

# 感想1. 環境の構築 → めちゃ簡単
僕はこれまでRuby on RailsとReactに触れたことがあります.
使ってるOSはWindows10.
するとどうなるか.

__環境構築で死す__

__コマンドプロンプトにerrorの嵐__

僕はもう疲れました.
こんなことならフレームワークなんか使わない方が早いや.
どうせザコだし僕.

そう思ってたある日,なんとなくPHPを使い始めて,それとなくLaravelにたどり着きました.
「どうせまた環境構築で死すんだろうな...」
半ばあきらめながらネットに落ちている記事を見ながらXAMPPやらLaravelやらを入れました.

…は?

__一度もエラーせず構築できた.__

こんなことがあるんですね.
もうこの時点で僕のハートはLaravel様の者でした.

「Windows想いなLaravel,好きです.」
僕はそう呟いて,そっと眠りについた.(え?

元記事を表示

Laravel初期設定

Laravelでプロジェクトを作成していく際の初期設定をやっていきます。
ここではLaravel ,Composerを導入し終えた状態で進めていきます。また、使うPCはMacです。

#1.初期設定(ターミナル)
まず、ターミナルでMAMPのhtdocs内にプロジェクトを作成していきます。

“`terminal
$ cd /Applications/MAMP/htdocs
“`
移動できたら、下記のコマンドを入力してblogというアプリを作成します。

“`
$ composer create-project laravel/laravel –prefer-dist blog
“`
最後に Application set key successfully.と表示されれば、
MAMPのhtdocs内にblogというプロジェクトを作成できました。
次に作成したmyblogに移動して、初期設定を行います。

“`terminal
$ cd blog
“`
移動できたら初期設定を行います。
権限の設定です。Laravelではログ

元記事を表示

フリーランスとしてアリババクラウドにWebアプリケーションを導入する方法

この記事を通して、私がクラウド上にWebアプリケーションをデプロイする際に使用しているベストプラクティスを共有したいと思います。

**本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/my-best-practices-for-deploying-a-web-application-in-alibaba-cloud_593826)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。**

この記事は[Medium Blogging Platform](https://medium.com/@liptanbiswas/best-practices-for-deploying-a-web-application-in-alibaba-cloud-ed37a6dc01?spm=a2c65.11461447.0.0.3a3757aaSRdB8Y)でも公開されています。

この記事では、私がウェブアプリケーションをクラウド上にデプロイする際に使用しているベストプ

元記事を表示

アリババクラウドECS上のWP-CLIでWordPressのメディア管理、ユーザー管理、データベース運用

この3部構成のチュートリアルでは、WP-CLIで**WordPress**の高度な管理を設定する方法を説明します。パート2では、アリババクラウドECS上のWP-CLIで**WordPress**を管理することに焦点を当てています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/advanced-wordpress-management-using-wp-cli-on-alibaba-cloud-ecs-part-2_591110)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

[Alibaba Cloud Tech Share](https://www.alibabacloud.com/ja/campaign/techshare)執筆者のJeff Cleverley著。[Tech Share](https://www.alibabacloud.com/ja/campaign/techshare)は、クラウドコミュニティ内で技術的な知識や

元記事を表示

gitでコンフリクトが発生してしまったら

コンフリクトとは、作業用ブランチさんとmasterブランチさんとの間にどんどん距離ができてしまってる状態のこと。

自分が作業してる間に、masterは更新されていきます。

気づかないうちに、お互いがどんな作業をしているのか知らないまま進んでしまっている状態なんです。

【コンフリクトをなくす方法】

1 まずどのファイルがコンフリクトが発生してるのか確認する
“`git status
“`

2 コンフリクトが発生してるファイルをmasterと比較して修正する

3 修正したファイルを追加してコミット
“`git add .
git commit -m “コンフリクト解消”
“`

4 作業用ブランチをプッシュする
“`git push origin 作業用ブランチ名
“`

5 git merge master

元記事を表示

開発用ブランチにMasterブランチの最新コードを取り込む

【手順】
※ もし、作業途中のものでcommit出来るものがあればcommitしておく

1 masterブランチへ移動
“`git checkout master
“`

2 git pullでmasterを最新に
“`git pull origin master
“`

3 開発用ブランチへ移動
“`git checkout 開発用ブランチ
“`

4 mergeコマンドでmaserの内容を取り込む
“`git merge master
“`

5 取り込んだものをリモートにpush
“`git push origin 開発用ブランチ
“`

元記事を表示

php artisan migrate が実行できないとき

Laravelでマイグレーションを実行しようとしたが、実行できない…

エラー内容
>SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’

直訳すると、root@localhostのユーザーが定義されてませんという感じ。

どうやらmysqlにうまく接続できてないっぽいですね。

【原因】
同じテーブルを2つ作成してしまっていた。
migrationでのテーブル作成と、ターミナル上でcreate table文を使っても作成していた。

【解決方法】
ターミナル上で作成したテーブルを削除すればok。

Laravelを使い始めたばかりでマイグレーションに関してよくわかっていなかった。。。?

元記事を表示

OTHERカテゴリの最新記事