- 1. 継承(inheritance)
- 1.1. Laravelのクロスサイトスクリプト(XSS)対策
- 1.2. Re:ゼロから始めるSNS作り生活(一週間目+α)
- 1.3. 【PHP】 bool値の文字列変換について
- 1.4. phpenv: PHPビルド時エラーの解消
- 1.5. Laravel9からEloquentのアクセサでキャッシュが使えるようになった
- 1.6. 未経験者がポートフォリオを作成してみた。【Laravel /Vue.js/ AWS】
- 1.7. 【AWS】LaravelアプリをEC2デプロイ⑥【S3編】
- 1.8. 【PHP】アクセス権について
- 1.9. Laravel 上で CSV を作成して保存する
- 1.10. LaravelでAuth0のIDトークン(JWT)を検証・デコードする
- 1.11. PG見聞録 ~PHP編 インターフェース~
- 2. インターフェース
- 3. ポリモーフィズム
- 4. 無名クラス
PG見聞録 ~PHP編 継承~
ボーナス月だからか最近飲食業は忙しい日々が続いております。
しかも宅配業界なので梅雨は忙しいんですよね…
ここ数年はコロナの影響もあり宅配は需要が伸びてかなり忙しくなりました。てことで今回は継承についておさらいしていきます。
継承(inheritance)
継承とは基となるクラスの機能を引き継ぎつつ、新たな機能を追加したりする仕組み。
ダーマ神殿で転職したけど元の職業の魔法使えるみたいな感じですかね。
継承の基となるクラスをスーパークラスや基底クラス、親クラスといいます
んで継承先のクラスをサブクラスや派生クラス、子クラスというわけですね。“`php
Laravelのクロスサイトスクリプト(XSS)対策
LaravelのXSS対策で意識することをまとめます。
# 要点
1、htmlのタグ内ではダブルクオテーションで囲う
““2、フロントに文字列を渡す時は、htmlspecialcharsでサニタイズする
## htmlのタグ内ではダブルクオテーションで囲う
ダブルクオテーションで囲わないと予期せぬ属性が追加されてしまう。
#### 実行例
“`php:TestController.php
class TestController extends Controller
{
public function index()
{
$text = “test onclick=alert(1);”;
return view(‘tests.test’, compact(‘text’));
}
}
“`
“`php:test.blade.php
{{– 正しい –}}
Re:ゼロから始めるSNS作り生活(一週間目+α)
# ☆どんな記事?☆
プログラミング初心者が、イチからSNSサイトを構築する過程を記録したもの。
誰かに「勉強の状況はどう?」と訊かれたときに提示できるよう、Qiitaの記事として投稿しています。
# ☆前置きや前提☆
### 完成品のイメージ
– コンセプトは「勉強記録をポストしたり、問題を出しあったりできるSNS」
– 自分の勉強記録をポストし、閲覧できる
– 友人の勉強記録に対し、コメントやミニクイズを投稿できる(本記事では未実装)
– 自分と似た目標を持つユーザーを検索し、フォローできる(本記事では未実装)
– フォローしている人の勉強記録を一覧表示する「タイムライン」もある(本記事では未実装)
– 当然レスポンシブデザイン(本記事では未実装)
### 制作の目的
– プログラミング技術の向上
– あわよくば友人にこのSNSを使ってもらいたい
### これまでの経験や知識
– WordPressで構築されたサイトの調整経験
(2年弱従事していたため、HTML・CSS・PHPとも基礎はわかっていたつもり)
(通信をはじめバックグラウンドの知識はゼロ)
– 大昔にイチからサイトを構
【PHP】 bool値の文字列変換について
# はじめに
bool値の文字列変換について知らず、学んだことがあったため自分なりにまとめます。# 公式ドキュメント
公式ドキュメントを確認すると以下の様に記載されていた。> 文字列への変換
(string) キャストや strval() 関数を使って変数を文字列へ変換することができます。 文字列型を必要とする式のスコープにおいて、文字列への変換は自動的に行われます。 echo や print 関数を使うとき、 あるいは可変変数を文字列を比較するときにこの自動変換が行われます。 マニュアルの型 と 型の相互変換 の項を読むとわかりやすいでしょう。 settype()も参照してください。> bool の true は文字列の “1” に、 false は “” (空文字列) に変換されます。 これにより boolean と文字列の値を相互に変換することができます。
https://www.php.net/manual/ja/language.types.string.php
らしいです。
今回私のケースとしてはjson形式の文字列にtrueをセットした変数を文字列連結
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
endbegin
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 –