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

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

Laravel マイグレーションファイルと一緒にモデルファイルも作成する

# 目的

– マイグレーションファイル作成時に一緒にモデルファイルを作成する方法をまとめる

# 実施環境

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

| 項目 | 情報 |
| — | — |
| 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 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | H

元記事を表示

PHP TCPDFの使い方

TCPDFのサンプルでは$pdf->writeHTMLの例は多く有るが、通常のPDF出力例を色々な関数を使って投稿します。
特にテンプレートを作成する場合は、各表示項目を指定のロケーションに設定する為テストしてみました。

![スクリーンショット 2020-04-16 3.35.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101462/f96ff768-f527-7de1-1af0-6512212126b7.png)

“`php
include(“./TCPDF/tcpdf.php”);

define(“MY_PDF_PAGE_ORIENTATION” , “L”); // P:Portrait, L:Landscape
define(“MY_PDF_FONT_NAME” , “kozgopromedium”); // kozminproregular
define(“MY_PDF_FONT_SIZE” , 10);
define(“MY_PD

元記事を表示

Amazon Linux2 ec2にphp7.4 +laravel7+mysql8.0環境構築

# 概要
Amazon Linux2 ec2インスタンスに接続し、ec2-userの状態でphp7.4、laravel7、mysql8.0をインストールし環境構築します。
途中、必要に応じてapache、php-fpm、git、bitbucket、phpmyadminのインストール、設定も行っていますがこちらは必須ではありません。

なお、Amazon Linux ec2インスタンスに接続した後、yumコマンドがうまく実行できない場合はAWS VPCのポリシーの編集が必要な場合がありますので注意してください。その場合、VPC から Amazon Linux AMI リポジトリをホストする S3 バケットへのトラフィックを許可する必要があります。
詳細は、[AWS公式ドキュメント](https://aws.amazon.com/jp/amazon-linux-ami/faqs/)を参照してください。

“`
{
“Statement”: [
{
“Sid”: “Amazon Linux AMI Repository Access”,
“Principal”

元記事を表示

ラズパイとpasoriを使って簡単な入退室管理システムを作ってみた

#はじめに
前回書いた「[ブラウザでnfcpyを使ってNFCタグのIDmを表示してみる](https://qiita.com/mono_taro/items/438e1d5f34f2893c642e)」と前々回書いた「[PHPでデータベースを使ってみるための備忘録](https://qiita.com/mono_taro/items/aa8265855a7e128e6f1d)」を組み合わせて簡単な入退室管理システムを作ってみました。

####動機
以前から、大学のサークル/部活動などで部室は開いてるのか、誰がいま部室にいるのかわかることの出来るシステムがあったらいいなぁと思ってので、今回PHPの勉強を兼ねて作りました。
最初は在否を手動で登録する方法を考えたのですが、手間が多くてめんどくさそうなので、誰でも持っているような交通系ICカードのようなNFCカードのIDmでメンバーを特定して自動で在否を更新する方式にしました。これならリーダーにカードをかざすだけなので改札機通るのと同じ手間で済むのでそこまで面倒ではないと思います。

##作品紹介
PCで制作してラズパイに実装し、同じL

元記事を表示

初めてのMAMP【アプリ作成からサーバー起動まで】

## PHP学習時(主にlaravel使用)に利用しているMAMPのアプリデータ保存〜サーバー起動まで

MAMPのインストールについては **[公式サイト](https://www.mamp.info/en/mac/)** もしくは **[参照記事](https://qiita.com/kutarou197/items/9ea4c7539f869a2959d2)** をご参照ください。

### 作業一覧
1. MAMPにファイルを保存
2. Apachの設定(初回のみ) VScode使用
3. Apachの設定(新規アプリ追加時) VScode使用

今回の作業では、以下のものを使用しています。
・テキストエディタ = VScode
・コマンドライン = ターミナル

##事前準備
MAMPを起動しておきましょう。
一番右のアイコン「start servers」を押してサーバーを起動し、下図のように「stop servers」に変わったことを確認してください。右上のApache ServerとMySQL Serverも緑色

日本の携帯番号の正規表現を求められています、お願いいたします。

こんにちは、:sunny:中国人の路と申します、日本語の初心者です、どうぞよろしくお願いいたします。
phpやってます、いつも日本向けのプロジェクトをやってますから。
ただいま、ある質問を聞きたくて、
日本の電話番後と携帯電話番号の正規表現を求められています。
ある人が答えてくれましたら、ほんとに助かります。どうもありがとうございました

Laravel ユーザー認証機能

#前提
composerインストール済み
php7.3
Laravel6.0以降
ログインしないと使えないようなサービスの開発に必要なユーザー認証機能についてアウトプットしていきます。

#本題
・ユーザーの登録
・ユーザーのログインとログアウト
・ユーザーの情報の管理などを行うホーム画面
・ログインしていないユーザーのアクセスを制限するアクセス制限
・現在のユーザーのログイン状態などをプログラムないから調べるための各種機能
これらの機能を1から開発していくのは大変…
ですが、Laravelではもとより、認証機能を持っているため簡単に実装できます。

認証機能「Auth」を使用します。
早速、実装していきます。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ターミナルにて下記、コマンドを入力。

“`ターミナル
$ composer require laravel/ui
“`
※もしcomposer command not foundのようなエラーが出たらcomposerが入っていないのでインストールする!
問題無かったら下記、コマンドをターミナルに続けて打

HTMLファイルをPHPでスクレイピング

# 下準備

“`php
$html = ‘https://xxx.com/index.html’;
$html = file_get_contents($store_html);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
“`
– @」でエラーを抑制しているのは HTML の記述に誤りがあった場合でもエラーを表示しないようにするため

# 値の取得の例

“`php
$tar = $xpath->query(‘//body//p[contains(.,”タイトル”)]/following-sibling::div[@class=”main”]/span’)->item(0)->nodeValue;
“`

– 「//」で途中のパスを省略することができる。
– 上記は**bodyタグの中から、文言に”タイトル”を含むpタグの隣の、class名がmainのdivタグのなかの、spanタグの中のテキスト**を取得している。
– query() は一致した全ての要素をリ

ターミナルでPHPコードを実行する

PHPは膨大な関数が含まれていますが、関数の使い方・挙動を簡単に確認したい場合がよくあります。

その時、PHPファイルを作成〜Webサーバを起動〜ブラウザを起動…といった手順を踏まずとも、お手持ちのターミナルからPHPコマンドをオプションを指定して実行することで、対話的シェルを起動してPHPのコードを実行することができます。(ただし環境上のPHPが–with-readlineを指定してコンパイルされている場合に限ります。)

“`
$ php -a
“`

あとはコードを打ち込むだけ。

“`
Interactive shell

php > $ary = array(‘aaa’, ‘bbb’, ‘ccc’);
php > foreach($ary as $row) {
php { echo $row;
php { }
aaabbbccc
“`

PHPマニュアルに掲載されてるコードもこの通り。

https://www.php.net/manual/ja/function.array-merge.php

“`
php > $array1 = array(“colo

PHPとMySQLの接続方法をいろいろ比較した

昔PHPの学習をしていた時、PHPとデータベースの色々なDB接続方法を調べたのでそれを纒めました。
かなり古い実装方法も記載してある為、万一この記事を参考にする場合は、非推奨と書かれていない方法で実装することをオススメします。

##mysql_connect関数を使う(非推奨)
公式サイトによると、“mysql_connect“は PHP5.5.0で非推奨になり、PHP 7.0.0で削除されています。
よほど古いサイトの改修などに関わる時以外は使う事はまず無いでしょう。
他にも[ほとんどのmysql関数](https://www.php.net/manual/ja/ref.mysql.php)が非推奨または削除となっています。

“`php:mysql_connect
// DBへ接続
$link = mysql_connect(‘localhost’, ‘user_name’, ‘password’);
if(!$link){
die(“データベースの接続に失敗しました”);
}

// データベースの選択
$db_selected = mysql_select_

PHPでの文字の表示とHTMLタグにPHPを埋め込んだ

初投稿。
Qiitaの使い方のテストを兼ねて投稿します。

“`php:test.php

CakePHPブログチュートリアル 検索機能追加

cakephpのブログチュートリアルに機能を追加していきます。

#事前準備

## 前ユーザがログアウト出来るようにする。
以下のコードを追加。

“`
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow(‘logout’);
}

“`
## Post/addで記事を作成した際にidが自動で付与されるようにした。

PostsController.phpにて

“`
$user_id = $this->Session->read(‘Auth.User.id’); //セッションコンポーネントでログインしているユーザーのidを取得。
$this->set(compact(‘user_id’)); //add.ctpにid情報を送る
“`

add.ctpにて
送られてきたidを受け取る

“`
echo $this->Form->hidden(‘user_id’,[‘value’=>$user_id]);
“`

#タイトル検索機能を追加

## Post

職業訓練,制作課題,阿部寛,CSS,上書き,サイト公開

昨日、6ヶ月間の職業訓練(Webアプリプログラマー講座)を修了し、晴れてニートになりました。おめでとう、おめでとう。

職業訓練の最後の制作課題で作ったサービスを公開したので、広告を兼ねて宣伝させていただきます。春だから。

タグが並んだ投稿タイトルで内容の大部分は説明し切れていると思いますが、詳細は以下に。
## メタ情報
“`html:サービス概要






“`
## 構造
スクリーンショット 2020-04-15 13.57.50.png単一責任の原則

##単一責任の原則 (Single responsibility principle)

クラスは1つのことだけ責任を負う

もし複数の責任を負っているとすれば、それは伝播する
つまり、1つの変更内容が伝播してしまう

### ある日の会話
私「この原則を徹底すると、クラスを大量に作成しないといけないから、ファイル管理が大変にならない?」

夫「そうだね。実際コードを書いて説明するよ」
夫「まず悪い例ね」

“`php:悪い例1
class BadSampleConstructChange
{
public function __construct(array $users)
{
$this->user = $users;
}

public function A(){}
public function B(){}
public function C(){}
}
“`
夫「コンストラクタに渡すものに修正が入ると、A、B、Cメソッド全てに変更が必要になる」

夫(メソッド内容とメソッド名は省略するわ)

私(おけ)

`

Laravel Eloquantを用いてデータを取り出す

# 目的

– Eloquantを用いたデータのやりとりの方法を学んだので忘れないようにまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| 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 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて

composer installまでの道のり

#初めに
業務でcomposerを使うことがあったのですが、Windowsユーザーがほとんどでmacの環境でドキュメントが書かれていなかったのでインストールまでの手順

– macOS Catalina 10.15.4

#Homebrewから
エンジニアなら当たり前のように入ってると思うのですが一応

“`terminal
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

(中略)

$ brew doctor
Your system is ready to brew
“`

終わり

#composerをインストールしよう!

“`Terminal
#composerをインストールする
$ curl -sS https://getcomposer.org/installer | php

#/usr/local/bin/composerに移動させる
$ sudo mv composer.phar /usr/local/bin

Laravelプロジェクトでcomposer install時にエラー

##エラー内容

Laravelプロジェクトでcomposer install時にエラー発生。

>Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

![cap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147857/80dc2ae5-d051-44c5-d4de-3bcbb8f8b2c9.png)

拡張機能ext-mbstringがなくて怒られている模様。

CentOSとかだとyum install・・・でext-mbstringをインストールすればいいようですが、
こちらWindows。

##解決策

php.iniファイル内に拡張機能を指定する項があるので

Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その3「Repositoryクラス」

### INDEX
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!

– [その1「マイグレーションファイルを見てみよう」](https://qiita.com/xioncc/items/1dcec2fbe3485b7e769a)
– [その2「$app[‘db’]って何者?」](https://qiita.com/xioncc/items/cd4a46e5aca16b13174d)
– [その3「Repositoryクラス」](https://qiita.com/xioncc/items/1ce2132594c4596a73ae)

## Repositoryクラス
前回“DatabaseManager“の“$this->app[‘config’][‘database.default’]“ってなんだろうというところまで読みました。それを追ってみましょう。
“DatabaseManager“クラスのコンストラクタは以下のように定義されています。

“`php:Illuminate/Database/D

Raspberry Pi4セットアップメモ RAMP編

# Raspberry Pi4セットアップメモ2

[前の手順](https://qiita.com/Lycolia/items/3521febe456ce1dc53dd)でうまく行かないので焼き直し

## 環境

– `Raspbian GNU/Linux 10.3 (buster)`

## Install

1. `sudo apt install mariadb-server-10.0`
2. `sudo apt install apache2`
3. `sudo apt install -y php php-mysql libapache2-mod-php`
4. `sudo apt install phpmyadmin`

## Setup

### MariaDB

#### ユーザーとDB作成

1. `CREATE USER ‘foo’@’localhost’ IDENTIFIED BY ‘bar’;`
2. `CREATE DATABASE bar;`
3. `GRANT ALL PRIVILEGES ON *.* TO ‘foo’@’localhost’ WI

LaravelでDBのレコードを削除する4つの方法

どれもOKでした!

## whereで絞り込んで、delete()で削除
### new して削除

“`php
$db_data = new Product;
$db_data->where(‘id’, 1)->delete();
“`
### new しないで削除

“`php
Product::where(‘id’, 1)->delete();
“`

## idで一意に絞り込んで、destroy()で削除
### new して削除
“`php
$db_data = new Product;
$db_data->destroy(1);
“`

### new しないで削除

“`php
Product::destroy(1);
“`