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

PHP関連のことを調べてみた2020年08月18日
目次

【PHP】アクセス権の意味とその使い分け

#アクセス権とは?
変数やメソッドにどのクラスから接続できるかを示した定義。

**public / private / protected**
上記3つのアクセス修飾子を変数やメソッドのはじめにつけることで定義する。

#3つのアクセス修飾子の意味
**public** :どこからでもアクセス可能
**protected**:そのクラス内とそのクラスを継承したクラス、また親クラスからアクセス可能
**private** :そのクラス内でしかアクセスできない

#この3つをどのように使い分けていくのか?

**public** :そのクラス外からも呼ばれるもの(メインメソッド・getメソッドなど)
**protected**:継承先でも使うもの
**private** :上記以外はprivateでつくる

基本的にはprivateとpublicで作って、
継承が必要となった時にprotectedを使用していくのが
カプセル化を促進する上で有効なのではないか、と思っています。

例:
税率って他から書き換えられたくはない
でも取得する処理は必要

“`
Class Tax

元記事を表示

【PHP】Herokuへデプロイしたアプリの投稿機能で500エラー

アカウント登録からデプロイまでとても簡単なHerokuでしたが、
作成したアプリケーションの記事投稿機能でPOSTする時に500エラーを出してしまったので、
対処する時に行った事を備忘録として残しておく。

## 環境
PHP 7.3.8
Laravel 6.18.35
DBはPostgreSQL
Heroku CLI導入済み

## ①ログを確認する
`heroku logs`コマンドでログを確認してみる
or
Herokuダッシュボードの`More`→`View logs`からでもログが確認可能です。
![スクリーンショット 2020-08-17 22.32.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531606/cf41e086-e3ee-6bcf-db19-e3f040bcadc4.png)
ただこの時点では`status=500`が発生した事以上の情報が得られないので、
詳細な情報を出力する為にHerokuの環境変数に`LOG_CHANNEL=errorlog`を設定します。

ここ

元記事を表示

【PHPでECサイト】

## はじめに
これまでに独学してきた知識の整理のために、ECサイトを作成します。

### バージョン
PHP:7.4.5
phpMyAdmin:5.0.2
MySQL:5.7.30

## 実装する機能
– [CRUD機能](https://qiita.com/taqmi/items/932a44b94b3a8c644370)
– [ログイン機能](https://qiita.com/taqmi/items/24520d00bb19d9b701b6)
– [カート機能](https://qiita.com/taqmi/items/5ab83a0093748c307f6f)

——-
***Now Writing*….**

– デザイン(Bootstrap)
– 購入履歴
– 検索機能
– ページネーション
– セキュリティ

元記事を表示

php artisan serveをしたらエラーになった

laravelで作成したプロジェクトでサーバを起動しようとしたところこのようなエラーがでた

Version
・PHP 7.4.9
・Composer 2.0.0-alpha3
・Laravel Installer 3.2.0

“`
$php artisan serve

Laravel development server started: http://127.0.0.1:8000
Sun Aug 16 19:18:09 2020 (10355): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.0.1:8001
Sun Aug 16 19:18:09 2020 (10356): Fatal Error Unable to create lock file: Bad file descriptor (9)
Laravel development server started: http://127.0.

元記事を表示

type=”file”で送信したファイル名の取得方法

$_FILES(HTTP ファイルアップロード変数)を使用し、取得可能

“`
$_FILES[‘inputで指定したname’][‘name’]
“`

使用例

“`



“`

元記事を表示

パッケージというかnamespaceの依存関係を機械的にチェックしたい

作った。
https://github.com/nishphp/phpstan-namespace-dependency
https://github.com/nishimura/phpstan-namespace-dependency-sample

DDDでもMVCでも単純なレイヤー構造でもいいけど、各レイヤーごとの依存関係を静的にチェックしたかった。

コードを書き始めて、最初のうちは気を付けるしnewするときは割と意識しているんだけど、しばらく経った後とか急いでいるときとかにreturnやthrowでレイヤーを飛び越えて返却してしまうことがある。

最初はnamespaceを飛び越えてないかだけチェックしようと思ったけど、クラス名までチェックするようにしたらfriendやpackage private的なものも出来るようになってしまった。
コンストラクタやメソッドだけに制限をかけているわけではなくてクラス名単位で制限がかかるからちょっと違うけど。

実際のプロジェクトに適用するところまでいけてないので、使い勝手はまだ不明。

元記事を表示

日本語諸方言コーパスをDB化して遊ぶ (8) ファイル形式変換機能をつける

連載記事です。前回までに談話・話者ごとの発話総覧を作ったので、今回は最後の機能「サイト上での Excel と TextGrid の相互変換」を実装します。完全に自分用の作業メモで、説明もいろいろ足りていないと思いますが、ご容赦ください。

先述のとおり、今回は既に TextGrid と Excel を変換する Python スクリプトが存在しているので(内容には詳しく触れません)、これを Laravel アプリに組み込んでサーバー上で実行することを目指します。

– 第1回: [日本語諸方言コーパスをDB化して遊ぶ (1) 構成を考える](https://qiita.com/a_eau_/items/dcb83886c4b580565ce7)
– 第2回: [日本語諸方言コーパスをDB化して遊ぶ (2) SQLite3 で DB 化](https://qiita.com/a_eau_/items/0bb4f3f8271c6dbc12a5)
– 第3回: [日本語諸方言コーパスをDB化して遊ぶ (3) PHP Laravel で操作する](https://qiita.com/a_eau_

元記事を表示

【PHPでECサイト③】カート機能

## はじめに
今回は、カート機能を実装していきます。
**※当ページは、【PHPでECサイト】で作られたものを前提にしています。**
– [【PHPでECサイト①】CRUD機能](https://qiita.com/taqmi/items/932a44b94b3a8c644370)
– [【PHPでECサイト②】ログイン機能](https://qiita.com/taqmi/items/24520d00bb19d9b701b6)

### バージョン
PHP:7.4.5
phpMyAdmin:5.0.2
MySQL:5.7.30

### 今回作成するファイル
**html**
– index.php
– index_add_cart.php
– cart.php
– cart_delete.php
– finish.php

**model**
– carts.php

**view**
– index_view.php
– cart_view.php
– finish_view.php

## テーブルの作成

“`html:sample_carts
CREATE TABLE

元記事を表示

phpUnitで配列の値を順不同で比較したい時

assertSameだと順不同で比較してくれない。
そういう時はassertEqualsCanonicalizingを使えば解決。
phpUnit7.5以降のversionで使用することができます。

“`php5:使用例
//成功例。配列を順不同で比較してくれる。
$this->assertEqualsCanonicalizing([1,2,3,4],[4,1,3,2]);

//失敗例。他の関数と同じく第3引数でコメントしてくれる
$this->assertEqualsCanonicalizing([1,2,3,4],[4,1,3,3],”失敗しました”);

“`

参考:https://www.geeksforgeeks.org/phpunit-assertequalscanonicalizing-function/

元記事を表示

Laravelでmailgunを使いメール送信してみる

# mailgunアカウント登録
mailgunのAPIを使うにはアカウント登録が必要です。
[公式ページ](https://www.mailgun.com/)にアクセスし「Start Sending」をクリックしてください。

![20200807.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644759/57ec35a6-ab27-201e-6634-36fa96820b3c.png)

アカウント登録ページが表示されます。
必要情報を入力してください。
「Add payment info now」のチェックを外しておけば、クレジットカード情報は入力しなくて済みます。
※後から有償版に切り替えたい場合は、ダッシュボードの「Account Settings」>「Billing plan」から切り替えることができます。

![20200807_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644759/86d493

元記事を表示

【Laravel】ユーザー認証機能である「Auth」を日本語化する方法

# 開発環境
– `PHP 7.4.8`
– `Laravel Framework 7.23.0`

# 目的
ユーザー認証機能である「**Auth**」を日本語化する

# Auth日本語化
**【参考記事】**

ログイン認証機能の日本語化(laravel6)

## 1. Laravelの日本語の設定

“`php:config/app.php
#下記内容の該当箇所を書き換える
‘timezone’ => ‘Asia/Tokyo’, // タイムゾーン
‘locale’ => ‘ja’, // 第一言語を日本語(ローカライゼーション)
‘fallback_locale’ => ‘en’, // 該当言語が見つからない場合の言語
‘faker_locale’ => ‘ja_JP’,
“`

## 2. 新規ディレクトリ、ファイル作成

### ①「ja.json」ファイル作成

– resources/lang内にja.jsonファイル新規作成
– 作成後、下記内容を記述(コピペOK)

“`javascrip

元記事を表示

SmartyファイルをTwigに変換する (EC-CUBE2 → EC-CUBE4 移行用)

## テンプレートを捨てたくない

– EC-CUBE3以降、テンプレートエンジンがSmartyからTwigになった
– EC-CUBE2でデフォルトのページを使ってた人は、EC-CUBE4でもそのままデフォルトのページを使えばいいと思う
– オリジナルのページを追加して使ってた人にとっては、それをEC-CUBE4に移行してからも持ち越して使いたいことがある ( = 私)
– それが手で書き移せるような分量ではない場合もある ( = 私)

## 自動変換ツール

### PHP Smarty to Twig Converter
#### [sankarsuda/to-twig](https://github.com/sankarsuda/to-twig)

> toTwig is an utility to convert smarty template engine to twig template engine.

– 個人制作 (インドのSankar Sudaさんありがとう‥‥)
– 7年前に作ったまま放置されている

### Converting Smarty templat

元記事を表示

【Windows/PHP】XAMPPのsendmailでローカル環境からメールを送信する(mb_send_mail())

#概要
Windowsのローカル環境からメールを送るための設定メモです。
XAMPPを利用しており、その中にあるsendmailを使います。

今回はPHPの`mb_send_mail()`でメールを送るために設定します。

#メールサーバーの準備
メールサーバーを持ち合わせていないので、[mailtrap](https://mailtrap.io/)というサービスを利用します。
無料会員登録で簡単にメールの送受信テストが行えるサービスです。
**(メールサーバーを持っている場合は、そちらの情報を使えばOKです:ok_woman:)**

mailtrapについては以下も参考にして下さい。

– [開発環境からのメール送信テスト](https://qiita.com/e__ri/items/857b12e73080019e00b5#%E3%81%8A%E3%81%BE%E3%81%91%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%8B%E3%82%89%E3%81%AE%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E

元記事を表示

【PHP】容量が大きくアップロードが中断される、タイムアウトする際の対処法

##はじめに
業務上でPHPファイルがインポートできなかった際に調べたサイト(ページ下部リンク参照)を参考にしています。
素人の備忘録程度の投稿なので、至らない点があると思いますがご了承ください:blush:
##①容量が大きくアップロードが中断される場合
容量が大きいファイルの場合、`php.ini`というファイルを書き換える必要があります。
アップロードされるファイルサイズの上限が決まっているので、php.iniファイル内の下記を修正します。

・memory_limit(使用できるメモリの上限設定)
・post_max_size(POSTされるデータの上限設定)
・upload_max_filesize(アップロードされるファイルサイズの上限設定)

“`php.ini
memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 2M
“`
例えばこのような設定になっている場合

“`php.ini
memory_limit = 128M
post_max_size = 128M
upload_max

元記事を表示

Laravel キャッシュクリア&最適化

本番環境にデプロイする際に必ずやっておきたいキャッシュクリア&最適化です。

## キャッシュクリア

“`shell-session
$ composer dump-autoload -o
$ php artisan optimize
“`

## 補足

### composer dump-autoload -o

本番環境では `-o` オプション付き、開発環境では `-o` オプションなしで運用します。
このコマンドは下記ファイルを生成します。

“`
vendor/composer/autoload_classmap.php
vendor/composer/autoload_files.php
vendor/composer/autoload_namespaces.php
vendor/composer/autoload_psr4.php
vendor/composer/autoload_real.php
“`

### optimize

`optimize` は下記のコマンドを実行します。

“`shell-session
$ php artisan confi

元記事を表示

$ git clone で取得したLaravelアプリのローカルサーバの起動に失敗する

# 目的

– 記事名のエラーを解決した話をまとめる

# 補足情報

– 本記事は一年以上前に記載した物が下書きボックスに眠っていた内容である。供養の意味も含めて一応記事にする。

# 問題発生までの経緯

1. GitHubのリモートリポジトリを`$ git clone`コマンドを用いて取得した。
1. .envファイルを作成、自分の環境にあった内容を記載した。
1. Laravelアプリ名ディレクトリで下記コマンドを実行してローカル開発環境用のサーバを起動した。

“`terminal
$ php artisan serve
“`

# 問題

– コマンド`$ php artisan serve`を実行後、下記のエラーが出力された。

“`terminal
php artisan serve
PHP Warning: require(/Users/ookawashun/workspace/work/laravel/calculation_drill_app/vendor/autoload.php): failed to o

元記事を表示

実務未経験者が顧客管理アプリを作ってみた 〜環境構築編その2〜

[実務未経験者が顧客管理アプリを作ってみた 〜環境構築編その1〜]
(https://qiita.com/sakashin10291029/items/c6be42c5b133cd38d81f)

前回は仮想マシンにDockerをインストールするところまで進めた。(一ヶ月前)
今回はDockerComposeをインストールして実際にコンテナを立ち上げていく。
ちなみにDockerComposeとはymlファイルへの記述を基に、複数のコンテナの定義、実行ができる非常に便利なツールである。
#手順
1.DockerComposeをインストールする
2.docker-compose.ymlを作成する
3.Dockerfileを作成する
4.コンテナを起動する

#1.DockerComposeをインストールする
仮想マシン内で以下コマンドを実行する。
DockerCompose公式を参考にする。
https://docs.docker.jp/compose/install.html#linux

“`
#インストール
$sudo curl -L https://github.com/doc

元記事を表示

Laravel初心者に知って欲しいルーティングの見やすい書き方とあれこれ

# ルーティング綺麗に書いた方が見やすくない?

Laravelでいう`routes/web.php`のこと
初学者のコード見てるともう少しすっきり書けるのになー
そもそも使い方があんまり分からないのかな?と思い記事にする事にしました

## そもそもどういう仕組み

![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_293438_2c0af10e-1ee8-79e3-1b8c-53069c92e6ae.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293438/20a668eb-2566-9a74-3385-55a692919df3.png)

`HTTP動詞`

postだったりgetだったりresourceとかその時のHTTP動詞を指定

`URLのパス`

定義した文字にアクセスした時に適用されるルート

`コントローラー名`

app/Http/Controllers/の中で定義したいコントローラーを指定

`メソッド名

元記事を表示

Laravelワカンネ(゚⊿゚)から「完全に理解した()」までステップアップ

# ~~タイトルで釣る~~

![images (1).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293438/7b87798b-2efa-a907-192b-209806fa1df1.jpeg)

## はじめに

この記事は [Laravel Advent Calendar 2019](https://qiita.com/advent-calendar/2019/laravel) の**24日目の記事**です

## この記事を書こうと思った理由

~~ネタが思いつかなかった~~
Laravelを業務で触れて1年が経とうかというのに未だLaravelの基本的な機能を理解しているか
と言われたら首が引きちぎれる勢いで首を横に振ってしまいます。

始めた当初は、実行の流れ(ライフサイクル)も含めてふぁさーど??さーびすこんてな??だったので、
きっと同じように理解しないまま使ってる(~~または葬られた~~)人もいるだろうと思い書きました。

## そもそもLaravel使うメリットは

シン

元記事を表示

Laravel6でマルチ認証を実装する(UserとAdminの階層を分ける)

# 6.x系の記事があんまり無いのとUserとAdminを階層で分けるやり方も無いので備忘録として書く

> コードだけ見たいんや!!!というせっかちさんはGitHubのリポジトリを用意しているのでどうぞ
[Laravel6-Multi-Login](https://github.com/namizatork/Laravel6-Multi-Login)

## なぜ書いたか

– ~~自分の備忘録のため~~
– マルチ認証の記事は沢山あるけどどれもバージョンが古い(5.1 ~ 5.5とか)
– Userを階層分けしてる記事があんまりない(どれも似てる)
– 6x系の英語記事はあるけど、どれもflg管理だったりいまいち実務よりじゃなかった
– 6.8から$redirectToがRouteServiceProviderの定数になったので、対応した実装をしたかった

## やりたい事

こんな感じでControllerの中で`User`と`Admin`を分けたい(個人的にUserだけむき出しのAuthが好きじゃない)

“`
controllers
   ├── Admin
   │

元記事を表示

OTHERカテゴリの最新記事