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

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

時間を知らせてくれる秘書が欲しい

## 概要

いつもよくお世話になる音声では
事務的な冷たい視線で社長に「社長、XX時に–の予定が入っています」
「社長、–の予定まで、あとXX分です」
と社長気分をあじわいながらあれやこれやじゅるじゅるやらを行ってくれる。

「そんな気分をちょっとでも味わいたい」

ということで、今回は予定を登録後、
登録時間になったらお知らせしてくれる
システムをPHPの練習がてら作った。

## 処理の流れ
予定をwebにて登録

Webhookを使用しTeamsに通知

情報をwebサーバーに保存

10分に一度CRONに登録したプログラムを起動

Webhookを使用しTeamsに通知

## TeamsのWebhookの設定の流れ
1.Teamsにて自分だけのチャンネルを作成し
 設定から「コネクタ」を選択
![2020-05-29_09h37_48 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187924/4895cf34-d621-74ae-2512-b21336e28ebf.pn

元記事を表示

PHPUnitの”expectException()”は、例外を発生させる箇所より前に記載する

# 環境

“`
$ vendor/bin/phpunit –version
PHPUnit 9.1.5 by Sebastian Bergmann and contributors.

$ php –version
PHP 7.4.0 (cli) (built: May 27 2020 22:16:49) ( NTS )
“`

# expectException()を記載したのに、例外を発生させてもテストが成功しなかった

記載する位置、順番を間違えていたのが原因でした。

PHPUnitには、テストコード内で例外が生成されたかを確認する`expectException`メソッドが実装されています。
https://phpunit.readthedocs.io/ja/latest/writing-tests-for-phpunit.html#writing-tests-for-phpunit-exceptions

このメソッドは、例外発生箇所より手前で定義する必要があります。
上記公式ドキュメントのサンプルコードを借りて説明すると、

こうではなく、

“`Except

元記事を表示

【Lighthouse】schema.graphqlがキャッシュされて更新できない時の対処法【Laravel + GraphQL + Redis】

[Lighthouse](https://lighthouse-php.com/)を使っている時にローカルで実装して動作確認した後、AWS環境(+Redis)にデプロイしてECS確認したら`schema.graphql`の更新が全く反映されず、めっちゃハマりました。
この記事ではその解決策と簡単な解説をしていきたいと思います。

# 結論
`.env`または環境変数に`LIGHTHOUSE_CACHE_ENABLE=false`を設定するか、以下のコマンドを実行する。
ただし本番環境で上記の環境変数を設定するのは非推奨なので注意が必要。

“`
php artisan lighthouse:clear-cache
“`

# 環境
Docker 19.03.8
PHP 7.3.16
Laravel 6.18.3
Lighthouse 4.11

# 発生したこと
1. `Lighthouse`で[Resolver](https://lighthouse-php.com/4.6/api-reference/resolvers.html#resolver-function-signa

元記事を表示

Xamppの初期設定

Xamppの初期設定について紹介します。

##作業環境
OS:Windows 10
エディション:HOME
バージョン:2004
Xampp:バージョン7.4.6

※Xamppのインストール方法はこちらで解説しています。
[【環境構築】Windows10にXAMMPをインストールする方法](https://qiita.com/neneta0921/items/46b2b974ecc6075acb3c)

##php.iniの設定を変更する
![202005282156.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/fcf9cbfc-afa2-78f4-c2f7-07146480de95.png)
「Cドライブ」→「xampp」→「php」を開きます。設定を変更する前に「php.ini」をコピーして、「php.ini.org」などと書いてバックアップをしておきます。
###1.日本語化けを防ぐ
「php.ini」を開きます。
####「mbstring.substitute_charac

元記事を表示

Trelloのラベリング機能を自動化した[PHP7.3, Trello REST API, cron]

新型コロナウイルスの影響でリモート化した大学の講義の管理をTrelloで行っていたのだが、どうしても自動化した方がいいと思う部分があったので、自動化した。

##前までの僕のリモート講義管理方法
① `大学` という名前のボードを作成。
②`月` ~ `金` という名前のリストを作る。
③その内部で、それぞれの曜日にある授業の講義名のカードを作り、
④受けないといけない講義動画が配信されているのが確認されたら、該当カードに赤色のラベルを貼る。
⑤講義を受け、提出物を提出した後、赤ラベルを消す

という管理方法をとっていた。

スクリーンショット 2020-05-28 18.47.34.png

###どこを自動化するか
上記 ④ の、受けないといけない講義動画が配信されているのが確認されたら、該当カードに赤色の

元記事を表示

php.iniの上限値をなくす

#php.iniのmemory_limitについて
phpで一回の処理でデフォルトの上限値を超えると,

“`
Allowed memory size of 268435456 bytes exhausted
“`
こんな感じのエラーが出ます。
なので、/usr/local/etc/php/php.iniを開いて、

“`
memory_limit = 256M //この部分を変える
“`
“`
memory_limit = -1
“`

`-1`にすると処理の上限を外せるみたいです。

元記事を表示

CentOS7にComposerをインストールしよう

#はじめに
PHPにはComposerが必須だとのことなので、インストールすることにしました。

#前提
過去記事のWindows10にVagrantをを入れてCentOS7をインストールしよう([1](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4)、[2](https://qiita.com/erik_t/items/909efb63fd389f486ec3)、[3](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d)、[4](https://qiita.com/erik_t/items/8d006b599815c8fbf38b)、[5](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1)、[6](https://qiita.com/erik_t/items/11f24633f4248e4f33f0))、
ローカルでLAMP環境を構築しよう([0](https://qiita.com/erik_t/items/9c7c4

元記事を表示

CentOS8 + Apache2.4.37 + php7.2(php-fpm) で HTML ファイルの中で PHP を実行する

# Apache と PHP のインストール
“`bash
# yum install httpd php
“`

# Apache と PHP の起動と自動起動の設定
“`bash
# systemctl start httpd
# systemctl enable httpd
# systemctl start php-fpm
# systemctl enable php-fpm
“`

# PHP の設定変更
“`bash
# vi /etc/php-fpm.d/www.conf
“`
security.limit_extensions のコメントアウトを外し、末尾に .html を追加する。

“`bash
# vi /etc/httpd/conf.d/php.conf




のようにファイルの種類に html を追加する。
“`

各サービスを再起動する

“`bash
# systemctl restart httpd
# systemct

元記事を表示

MockeryのandThrowの引数について学んだ

# 概要
[前回の記事](https://qiita.com/juve_534/items/7ced1a08c0bf1d8d72c0)で紹介しましたが、テストコードでモックを使う際は、Mockeryを使ってます。
開発を進めて、学んだことがあったのでここに残します。

# TL;DR

* MockeryのandThrowは第一引数がインスタンスか例外クラスで切り分け
* 第一引数が例外クラスのときは、例外クラスがメッセージ、コードの順じゃないとエラーになる
* etc `AccessDeniedHttpException`

# 本編

やっていたのはLaravelプロジェクトのテスト作成です。
下記のようにクラスの返り値が `AccessDeniedHttpException` でときのものです。

他の例外と同様に書いていました。

“`php

元記事を表示

学習記録 PHP#4(RDBMSとMySQLの基礎)

#RDBMSとMySQLの基礎
##RDBMSについて
###RDBMS
* RDBMS:Relational Data Base Management System
oracle,MySQL,Access,DB2,SQLserverなど...
PDO:PHP Data Object
PHPでのRDBMS操作のクラス群

###RDBMSの構成要素
* テーブル
データを記録するもの。データベースの本体。
* エンジン
データの処理機能。検索、集計、並べ替え、更新、削除、追加、ロックなどはエンジンに集約。
ユーザーやプログラムがエンジンに指示を出し、エンジンが処理をしてデータをユーザーやプログラムに返す。

###RDBMSとSQL
* SQL:データベースに対する指示命令方法の統一規格
SQLコマンド:SQL規格で作られた指示命令系統
RDBMSはどの製品を使用してもSQLコマンドで動かされる。

##RDBMSの基本概念
###RDBMSの基本概念
* テーブルは切り分ける
* 必要に応じて、テーブル同士を結合する
###テーブルを切り分けるメリット
* データ入力の効率化
* デ

元記事を表示

【PHP】プログラムからMS Wordのドキュメントファイルを読み込む

PHPでWEBシステム制作の案件を処理していると、まれにwordのドキュメントファイルを読み込まないといけないという案件があったりします。ですが、Wordのドキュメントファイルに書き込むことを前提としたPHP-wordの使用方法はちらほら出てくるのですが、あくまでPHP上のデータをWord上に書き込むだけであり、逆にWordのドキュメントファイルを読み込むという方法がなかなか出てきません。

そこで、色々と検索ワードを考えて海外サイトも含め巡回した成果を記録していきたいと思います。

# Wordのdocxファイルを読み込む
docxファイルはWord2007から主流となっている、XMLを使用したファイルです。なので、PHPでXMLを読み込めるように対処すれば普通に読み込めてしまったりします。

これは、自分が公開しているPhpspreadsheetに関する記事ですが、こちらもxlsxファイルを読み込むためにphp-zipとlibzip5ライブラリをインストールしているので、今度の場合もdocxファイルを読み込むために同じライブラリをインストールしておきます。

“`
/*PHP7.

元記事を表示

PHP 配列に格納された連想配列に要素を追加する

# 目的

– 配列に格納された連想配列に値を追加する際に若干詰まったので方法をまとめる

# 前提情報

– 下記のリンク先で後述するコードの振る舞いを確かめる。
– [https://paiza.io/ja/projects/new](https://paiza.io/ja/projects/new)

# 具体例

– 連想配列が格納された配列`$tests`を定義し、`$tests`の末尾に連想配列を追加する処理を下記に記載する。

“`php
‘aaa’,
‘str_2’ => ‘bbb’,
‘str_3’ => ‘ccc’,
]
];

//追加する連想配列を記載する
$tests[] =
[
‘str_1’ => ‘ddd’,
‘str_2’ =

元記事を表示

SQLで複数テーブルをDELETEする方法

ユーザーアカウント削除時に削除されたアカウントの投稿内容も一緒に削除したい。
そんな時に使用したコードです。

それぞれのテーブルが以下となります。

users
id name
1 鈴木
2 山田
3 佐藤

posts
id user_id message
1 2 こんにちは
2 1   おはよう
3 3   こんばんは

実際のSQL文は以下になります。
DELETE users,posts FROM users LEFT JOIN posts ON users.id = posts.user_id WHERE users.id=?’

コードの読み下し文としては
削除対象のテーブルはusersとposts、usersのidとpostsのuser_idが一致したものを結合。
結合した後のデーターにてusersのidが後程代入された値と同じものを削除して下さい、となる。

元記事を表示

Xamppでポート競合を防ぐ方法

Xamppでポート競合を防ぐ方法をご紹介します。

##作業環境
OS:Windows 10
エディション:HOME
バージョン:2004
Xampp:バージョン7.4.6

※Xamppのインストール方法はこちらで解説しています。
[【環境構築】Windows10にXAMMPをインストールする方法](https://qiita.com/neneta0921/items/46b2b974ecc6075acb3c)

##ポートとは
>ポートはよく「扉(ドア)」に例えられるます。
IPアドレスが住所「家」であれば、ポートは外に出る・外から入る「扉(ドア)」に該当します。

>多くのホームページでインターネットはIPアドレスで通信を行っていると記載されていますが、実際には「IPアドレス+ポート番号」で通信を行っています。

引用元:[用語集 「ポート(PORT)とは?」](https://www.cman.jp/network/term/port/)
##Xamppでポート競合が起こる原因
1つのプログラムにつきポートは1個しか利用できない仕組みとなっているので、Xamppが他のプログラ

元記事を表示

【Git】Gitの使い方を考えてみた

# はじめに

この記事では
バージョン管理システムのGitを
職場で使うことを想定して
Gitの使い方についてまとめた記事です。

ベストプラクティスや間違いがあれば
それなりに良い方法で書き直していきます。

——————————–

# ベテランでもGitが扱えるとは限らないらしい

とある人に聞いたところによると
デキる技術者でも案外、
変更履歴のステージングやアド、コミットができないということらしい。
筆者は去年ぐらいからGitをプライベートで使い始めた一般の誤家庭の人

今度、新人君が配属されるということなので
彼にはちゃんと基本コマンドを覚えてもらいたいというオモイと
ちゃんとコードレビューできる体制と育てる環境を確立するという目標がある。

そうしたオモイや目標を実現させるためにGitの基本コマンドについてまとめてみました。
実際に職場に導入してもいないので
いざ使ってみるとこれもあれも必要となるかもしれないけど
とりあえず基本はおさえようというスタンス。

——————————–

元記事を表示

WindowsでPHPから入力したデータをExcelに出力する

## PHPからデータをExcelに出力する手順
### composerの入手

**`composer`は`PHP`のパッケージ管理ツール**

もっと簡単に言えば、何かパッケージをインストールするときに、それを動かすのに必要な他のパッケージも一緒にインストールしてくれるというもの。

`PHP`から`Excel`にデータを出力するには、`PhpSpreadsheet`というパッケージが必要になる。
それを入手するためにまず、この`composer`をPCで使えるようにする。

[Introduction – Composer](https://getcomposer.org/doc/00-intro.md#installation-windows) から `Composer-Setup.exe`をダウンロードして、実行。
インストールの詳しい手順は[Composerインストール手順(Windows)](https://qiita.com/mikoski01/items/266469535e860312145d) を参考に。
インストール完了後、コマンドプロントで`composer

元記事を表示

高知県のWEB業社はあまりコールバック使わないですか?

### コールバック使っている?
高知県のWEB業社はあまりコールバック使わないですか?
正直な所、WEB業社の零細企業や中小企業で
コールバック使用しているソースコードを見かけたことが有りません。
かなり少ないと感じます。今までコールバック使っているコードを目にしたことがないです。
間接的にワードプレスなどで使用している事はあるかもしれないけれど・・・。
それ以外は見たことがないです(´・ω・`)。
**※高知県に支店を持つ県外企業やソフトウェアやアプリを開発される企業は除く。**

ちなみに下記コードを実行するとこのような結果になります。
http://taoka-toshiaki.com/qiita-no4/

“`php:index.php

元記事を表示

SessionとCookieの使い分け

##はじめに
何をどっちに持たせたら良いかわからなくなったので、備忘録として残します

##Sessionとは
1. はじまりからおわりまでの、一連の行動
1. Webサイトにログインアクセスしてそのサイトから出て行くかブラウザを閉じるまでが1セッション
2. sessionスタート時にsession idを発行し、Cookieへ保存する。このidで通信相手(ユーザ)の判別をする。
1. サーバー側にデータを保存する仕組み、またはそのデータ
2. Cookieより改ざんの可能性が低いので、機密情報を保存したい場合はこっち
1. 会議、会期、学期などを表す英単語

##Cookieとは
1. ブラウザ側にデータを保存する仕組み、またはそのデータ
3. ブラウザでCookieへの保存を拒否した場合保存されない
2. 簡単に盗聴・改ざんできるので、機密情報は保存させない
3. 語源は諸説あるようだが、フォーチュンクッキー(fortune cookie:運勢を書いた紙が入ったクッキー)から来ている等

##おわりに
Sessionもすごい安全って

元記事を表示

Laravel MySQL 既に存在するテーブルにカラムを追加する

# 目的

– rollback時の記載を毎回間違えるのでしっかりとまとめる

# 実施環境

– ハードウェア環境(下記の二つの環境で確認)

| 項目 | 情報 | 備考 |
| — | — | — |
| OS | macOS Catalina(10.15.3) ||
| ハードウェア | MacBook Air (11-inch ,2012) ||
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 ||
| メモリ | 8 GB 1600 MHz DDR3 ||
| グラフィックス | Intel HD Graphics 4000 1536 MB ||

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro

元記事を表示

【環境構築】Windows10にXAMMPをインストールする方法

XAMMPのインストール方法をご紹介します。画像多めです。

##作業環境
OS:Windows 10
エディション:HOME
バージョン:2004
##XAMPPとは
XAMPPとは
X → Cross platform(MacでもWindowsでもLinuxでも利用できる)
A → Apache(Webサーバー)
M → MariaDB(データベース)
P → PHP(プログラム言語)
P → Perl(プログラム言語)
の略で、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージとしてまとめたものです。
つまり、XAMMPを1つをインストールするだけで、アプリを作成する環境が構築できるのです。
PHPはブラウザだけでは動かないので、PHPを動かすために導入しています。
##XAMPPのインストール方法
###①公式サイトからダウンロード
下記の公式サイトにアクセスします。
https://www.apachefriends.org/jp/index.html
![202005262113.png](https://qiita-image-store.s3.ap-no

元記事を表示

OTHERカテゴリの最新記事