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

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

phpenv: PHPビルド時エラーの解消

# 経緯
phpenv(https://github.com/phpenv/phpenv) を利用してPHP 8.1.6をインストールしようとしたところ、以下のようなエラーが表示されPHPのビルドに失敗した。
その後、いくつかのパッケージをインストールし、実行時に環境変数を渡すことでビルドが成功したため、その際のメモ。

“`
—————–
| BUILD ERROR |
—————–

Here are the last 10 lines from the log:

—————————————–
grep: invalid option — P
usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [–binary-files=value] [–color=when]
[–context[=num]] [–directo

元記事を表示

Laravel9からEloquentのアクセサでキャッシュが使えるようになった

Laravel9からEloquentのアクセサ/ミューテタでキャッシュが使えるようになったので試してみました。

## 検証バージョン
PHP8.1.6
Laravel9.16.0

## キャッシュの指定方法
アクセサを定義する時に`shouldCache`メソッドを呼んで指定します。
※Laravel9からアクセサ/ミューテタの記法が変わりました
“`php:User.php

*/
protected $fillable = [
‘email’,
‘sei

元記事を表示

未経験者がポートフォリオを作成してみた。【Laravel /Vue.js/ AWS】

# 1.はじめに
* 友人/家族/恋人との休日の行き先、ルートを提案してくれる「デートプラン提案アプリ」という物を作成しましましたので紹介させていただきます。

# 2.自己紹介
* こんにちはishii28と申します。
当記事は実務未経験者がポートフォリオをつく
WEB制作をはじめ、プログラミングに興味を持ち始めた。

* 私は「人の役に立ちたい」また「物作りを通して誰かの課題を解決したい」という思いがあった。
この観点から考え、エンジニアはそれを実現できると確信した。
この先はエンジニアという仕事を通じて人の課題に寄り添ったサービスを提供していけるようなっていきたいと考えエンジニアを目指した。


# 3.簡単に自己紹介
* 現在29歳でwebエンジニアになるために就職活動中です。

* 多くの人々の問題を解決し、人の役に立てる人間になっていきたい、 エンジニアはそれを実現できると確信しエンジニアを目指し始めた。

* 趣味は読書に没頭すること。


# 4.開発背景
* PFのテーマを選定する所から始まり、身近な友人や家族から実際に困っている事や不便に思っている事はないか調査す

元記事を表示

【AWS】LaravelアプリをEC2デプロイ⑥【S3編】

# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
Laravelで`S3`へ画像アップロードする方法です。

## 0-1. 前回記事
– 【AWS】LaravelアプリをEC2デプロイ【まとめ編】

https://qiita.com/kazumakishimoto/items/e0e109fca443a4acd2a1

– 【AWS】LaravelアプリをEC2デプロイ①【CloudFormation / EC2 / RDS編】

https://qiita.com/kazumakishimoto/items/0859a5a365b226c1b43a

– 【AWS】LaravelアプリをEC2デプロイ②【Route53編】

https://qiita.com/kazumakishimoto/items/825f8c5f94d0160b2364

– 【AWS】LaravelアプリをEC2デプロイ③【ACM / ELB編】

https:/

元記事を表示

【PHP】アクセス権について

## アクセス修飾子とは
プログラム上で変数やメソッドが同名として重複しないように、
変数や関数の有効範囲をするもの。とのことです。

## アクセス修飾子の使い分け・種類

### public
クラス内、外関係どこからでもアクセス可能

“`public.php
public;
}
}

$obj = new Myclass;
echo $obj->public; //プロパティの呼び出し
echo $obj->printhello(); //メソッドの呼び出し

//=> public public

“`
### protected
そのクラスと継承先クラスからアクセスが可能
“`protected.php

元記事を表示

Laravel 上で CSV を作成して保存する

# はじめに

仕事で Laravel 内でcsv を生成するコードを作成したのでその上で知ったことに関して備忘録代わりにこちらで記載しておきます。

# 保存場所の検討

Laravel のコードは当然ながら PHP で動いているので、ファイルを生成するのであれば、“`fopen((パス), (オプション))“` を用いることになります。
(fopen から fclose までの一般的なファイル生成手法に関してはこの記事では割愛しますので、気になる方は各自お調べください)

この時、
“`response()->streamDownload($callback, $filename, $header)“`
のようなファイルを生成したそばからレスポンスとして返すような場合は、$callback に渡すクロージャ内で“`fopen(‘php://output’, ‘w’)“`と
ファイルのパスを設定すれば問題ありません。

しかし、生成を行って一度保存する場合、その保存先を用意するにあたって気を付けるべき項目が存在します。

例えば、 **/storage/app/csv/{

元記事を表示

LaravelでAuth0のIDトークン(JWT)を検証・デコードする

# 環境
– [Laravel Framework 9.13.0](https://laravel.com/ “Laravel”)
– [PHP 8.1.6](https://www.php.net/ “PHP”)
– [auth0/auth0-php 8.2](https://github.com/auth0/auth0-PHP “auth0-php GitHub”)

## 前提
Auth0で`Single Page Appliation`を作成し、`ID Token`を**発行できる状態**を前提とします。
詳細な説明・方法は[【Auth0】LaravelでAuth0を使って認証する:IDトークン編【Laravel】](https://qiita.com/akkino_D-En/items/9c2a8c0d13ac802b04e7 “”)@akkino_D-Enがわかりやすかったので参照してください。

## 注意
`auth0-php`の**7系**では今回の方法で**実装できません**。
また、`auth0/login`という似たライブラリもあるので注意してください。

#

元記事を表示

PG見聞録 ~PHP編 インターフェース~

気分転換をして気を取り直してがんばるぞーと思った日はいろんなことが重なるもので
以前バックバンドやレコーディングでベースを担当させてもらってたシンガーの方から
2年ぶりくらいにライブでサポートの依頼を頂きまして。
コロナ禍でかなり厳しい状況にあってバンドでのライブは長いことお休みしてたんですが
かなりの時間が空いても真っ先に連絡をくれて「ベース弾いてくれると心強い」って言ってもらえるというのはミュージシャン冥利に尽きますね涙
そんなわけでインターフェースについて書いていきます涙

インターフェース

前回書きましたポリモーフィズムですが、同名のメソッドで別々の挙動を取れるというのは非常に便利な仕組みなのですが問題もございまして。
例えば子クラス1と子クラス2があって抽象化した親クラスがいて、メソッドを定義したとします。
子クラス1でメソッドA,B,Cが必要なので定義して、継承元の親クラスにオーバーライドします。
しかし子クラス2はメソッドA,Bだけがあれば良いんだよなあとなった時、その二つだけ都合よくオーバーライドしようと思ってもそうはいきません.

元記事を表示

PG見聞録 ~PHP編 ポリモーフィズム~

何だか日中は集中できず、休み休みやってたんですがやはり集中できず。
そんなときの気分転換、ワンコの散歩ついでにカフェラテ買ってきました。
多分ワンコ飼ってる人って自分ちの犬が世界一かわいいって思ってますよね。
そのうちの一人です。先日のトリミング後の写真みてください。
![ran.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669556/877c3c6c-eadc-e7ad-e1fa-16ac907a4eba.jpeg)
ほらかわいい。

ということでポリモーフィズム(多態性)についておさらいしていきます。

ポリモーフィズム

とは、多態性を意味する言葉です。態が多い性質です。
なんのこっちゃと思いますが要は「同じ名前を持つメソッドが違う動きをとる」ことです。
カプセル化、継承と並んでオブジェクト指向構文において大事な要素の一つですね。
学習がかなり溜まってしまったのでこれらもまとめていきたいと思います。

“`php

元記事を表示

PHP・Rubyのスタックトレースの出し方

## スタックトレース
スタックトレースとは、実行中のコンピュータプログラムにエラーが発生した際に、直前に実行していた関数やメソッドなどの履歴を表示すること。
ログよりも詳しいエラー箇所を特定することができる。

https://e-words.jp/w/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9.html

## Ruby
ドキュメントには載ってないが、“`join(“\n”)“`しないとかなり見づらいのでした方がいい。
“`ruby
def methd
raise
end

begin
methd
rescue => e
logger.error e.backtrace.join(“\n”)
end
“`

https://docs.ruby-lang.org/ja/latest/method/Exception/i/backtrace.html

## PHP
“`php
debug_print_backtrace();
“`

https://www.p

元記事を表示

Laravel9にバージョンアップしたらGoogle App Engineへデプロイするときにエラーが発生

## エラー内容

“`
$ gcloud app deploy


– Installing laravel/tinker (v2.7.2): Extracting archive
– Installing league/flysystem-google-cloud-storage (3.0.15): Extracting archive
– Installing spatie/laravel-google-cloud-storage (2.0.3): Extracting archive
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\FilenameFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily su

元記事を表示

gitの「pre-commit」を使って静的テストをする

## 概要
`git`に用意されている**フック機能**を使ってコミット直前に**静的テスト**を行えるようにしてみる。

キーワードは、
– **pre-commit** : gitのhook機能でコミット直前の処理を定義できる
– **PHP Lint** : PHP標準のシンタックスチェック機能
– **phpmd** : PHPの静的コード解析ツール

の3つになります。

## 実行環境
– CentOS 7.6
– PHP 7.2.24

## ディレクトリ構成
検証用に作成したディレクトリ構成になります。
“`
app:
├─.gitignore
├─composer.json
├─composer.lock
├─test_success.php
├─test_error.php

├─vendor

└─git_template
└─hooks
└─pre-commit
“`
主なのだけ説明
`test_success.php`、`test_error.php`
検証用のテス

元記事を表示

PG見聞録 ~PHP編 無名クラス~

最近はjavascriptと並行して学習しているのですが、仕組みや構文が似ていて
併せて覚えやすい(ビギナーにとってはごっちゃになりそうですが)というのも
PHPが入りやすいとされる所以ですかね。javaの学習もスムーズに移れそうです。

無名クラス

というわけで無名クラスについておさらいしていきます。
名前の通り、名無しのクラスで特定の文の中でしか使えないものです。
定義しておいて後から呼び出すとかも出来ない代わりにいくつかメリットがあります。
・コードをシンプルに表現できる
・許されている場所ならばどこでも記述できる
・名前が無いということは競合する恐れがない
というメリットがあります。
後にも先にもここでしか使わない、その場限りの少し特殊なクラスです。

“`php
/** 無名クラス
* ・コードをシンプルにまとめられる
* ・許されている場所ならどこでも記述できる
* ・名前がないので他のクラスと競合しない
*/

interface

元記事を表示

PHPのソケット通信(Client)でESP32と疎通してみる

# はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459889/3387ef68-d6bb-c624-8d4e-29fc23965e9d.png)

こんな感じのを作る

各バージョンはこちら
“`sh
$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2022-03-16T16:53:42

$ php -v
PHP 7.2.34-28+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Nov 19 2021 06:36:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group

$ cat /etc/os-release
NAME=”Ubuntu”
VERSION=”18.04.6 LTS (Bionic Beaver)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubu

元記事を表示

【PHP】PHP7技術者認定初級試験対策 ※用語の意味が中心

PHP7技術者認定初級試験を受けるにあたって勉強したところを備忘録として残しておきます。
自分用のメモのようなものなので、もし間違っている箇所等ありましたらご指摘いただけますと幸いです。

## エイリアス(別名)
独自につけるニックネームと覚えれば良い。
クラスや関数に別名をつけることでコードの効率化、簡略化を図ることができる。

## クロスサイトスクリプティング(XSS)
悪意あるユーザがフォームから悪いデータを送信することで、サーバに意図しない動作をさせること。

#### ■防止策
 1. データをそのまま送信できなくさせる。文字からHTMLタグを取り除くstrip_tags()関数を使用
 2. 特殊なHTML文字(例 & < > “)を変換させるhtmlentities()関数を使用

## $_SERVER(サーバー変数)
ヘッダ情報、パス情報、スクリプトの位置のような情報を提供する。

#### 例

① $_SERVER[‘PHP_SELF’];

(例) http://example.com/test.php/foo.php というアドレスの場合

“`

元記事を表示

PHPのバージョンをプロジェクトごとに切り替える方法

## はじめに
今回は**phpenvの導入~使用方法**までを紹介します。

– **導入の発端**
Jenkinsの**ビルド時にジョブごとにPHPのバージョンの切り替えを可能**にして
**依存関係エラーの解消**をするために使用。

:::note warn
Jenkinsのシェルからコマンドを打つ場合は、
最初にsource ~/.bash_profileを実行しないと`.bash_profile`は反映されない。
:::

## インストール

#### phpenv
“`
$ git clone https://github.com/phpenv/phpenv.git ~/.phpenv
“`

#### 環境変数へ追記
“`
$ echo ‘export PATH=”$HOME/.phpenv/bin:$PATH”‘ >> ~/.bash_profile
$ echo ‘eval “$(phpenv init -)”‘ >> ~/.bash_profile
$ exec $SHELL -l
“`

#### シェルの再起動
“`
$ exec $SHELL –

元記事を表示

Laravel で爆速ラクチン?に動的な機能を開発や!Livewire2.x 解説?

# この記事の目的
– Livewireの紹介
– 個人的によく使うlivewire逆引きリファレンス。

https://laravel-livewire.com/docs/2.x/quickstart

どういう事が出来るのか知った上でドキュメントを見ると読みやすいと思います。
使い慣れてる人はここを見た方が早いです

https://readouble.com/livewire/2.x/ja/reference.html

# Livewireって何
– Laravel7.x~ から使えるBladeとPHPの記述で動的な機能を作れるライブラリ
– jsを書かずに良い感じのUIが作れる。
– 学習コストも低く導入しやすい。

以前に布教目的で書いた記事

https://qiita.com/sgrs38/items/89a6a59b896669dfd725

## 紹介サンプル
こういうのをjavascript書かずに簡単に実装出来ます。
![ダウンロード (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

[PHP入門] テキストデータへの、送信、書き込み、読み込み 

# 初めに
PHPの学習を始め、よく使うけど、始めのうちは忘れて何度も見直すだろう。
という点を、メモ代わりにまとめていきます。

## 基本的な書き方
**[開始タグ]** “`

**[HTMLへ表示]** “echo“   
“`
echo “Hello”; //文字列
echo $hensu; //変数
“`
※jsのconsole.logのように()は不要だが、“ ; “を忘れるとエラーが出るので注意。

**変数定義** 
“`
$num = 1; //数列
$name = “hoge”;    //文字列
“`
## HTMLフォームのデータをPHPファイルへ送信
PHPを使う事で、HTMLとCSSだけでは見た目だけだったお問い合わせフォームを実際に活用できるようになります。

“`

お名前:

MAI

元記事を表示

【CodeIgniter4】form_dropdownの使い方

# はじめに
CodeIgniterに関して情報が少ないので、ドロップダウンの作成方法について投稿してみました。
良ければ参考にしてください。

言語:PHP
フレームワーク:CodeIgniter4
# 使い方
codeIgniterのフォームヘルパー`form_dropdown`を使ってドロップダウンを作成します。
フォームヘルパーを使用する際は、ヘルパーを呼び出すために`helper(‘form’)`を記述する必要があるので忘れずに!
“`
form_dropdown($name, $options, $select)
“`
$name:name属性(データ送信時、controller側で受け取るnameとなる)

$options:リスト表示させたい配列をここに設定する。

$select:画面レンダリング等の初期表示させたいリスト項目を設定する。
     連想配列のkey値を渡してあげることで初期表示を実現させる。   
     また、この引数をうまく使ってバリデーションエラー時に選択したリストのkey
     を渡すことで再度選択したリストを表示させることが出来る

元記事を表示

PHP 三項演算子の省略形

## 三項演算子の省略形
三項演算子は可読性が下がる場合もありますが、今回は紹介します。
下記の2つは同じ結果になります。

“`php:例文
$hoge ? $hoge : $hogehoge;
“`
**解説**
「$hoge」が `true` の場合は「$hoge」を返し、 `false` の場合は「$hogehoge」を返します。
 
“`php:例文
$hoge ?: $hogehoge;
“`
**解説**
「$hoge」が `true` の場合は「$hoge」を返し、 `false` の場合は「$hogehoge」を返します。
1つ目のコードと違う点は、 `true` の場合に返す値を省略している点です。
`true` の場合には「?」の左にある値が返されます。
※三項演算子の時点で可読性が下がる場合があり、省略することで更に可読性が下がる場合もあります。

元記事を表示

OTHERカテゴリの最新記事