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

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

【備忘録】文字列の中の変数展開について

## はじめに
変数展開について理解を深めたい。
シングルコーテーションとダブルコーテーションの違いを全く理解していなかったので、
備忘録を兼ねてまとめていく

## 変数展開とは
PHPにおける文字列の変数展開とは、文中における変数の値出力のこと。

## ダブルクオートを使った文字列展開
ダブルクオートを使うことによって、文字列の中で変数を展開することができる。
“`

元記事を表示

PHPで乱数の生成

PHPで乱数の生成の備忘録

PHPで乱数を生成するひつようがあったので自分用にまとめです。
mt_rand()で生成できる知識があったので、使い方を見ようと調べました。
詳しく書くのもあるですが自分用なので簡単にまとめます。

mt_rand()じゃなくてrandam_int()

調べているとmt_rand()よりrandam_int()の方がセキュリティが高いらしいのでmt_int()を使っていきます。

“`
$number = random_int(0, 2); //0から2の間の数で乱数生成し$numberに格納
echo $number;                           //0から2の値のどれかが入っている$numberを出力
“`

最後に

簡単でしたね。これからも勉強内容を忘れないためにqiitaに残していきたいと思います。

元記事を表示

【メモ】Laravel開発環境の必要物を学ぶ

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。

Laravelの開発環境を構築をしたいので何が必要かを調べる。

開発環境構築ので必要なのは
・XAMPPインストール
・Composerインストール→Laravelインストール

# XAMPPとは
XAMPPは頭文字をとってる。
「X」:様々なOSに対応する「クラスプラットフォーム」を意味する「X」を使用
「A」:Webサーバソフトウェアの「Apache」の頭文字を使用
「M」:データベース管理システムの「Maria DB」の頭文字を使用
「P」:アプリ開発で多く使われるプログラミング言語の「PHP」の頭文字を使用
「P」:アプリ開発で多く使われるプログラミング言語の「Perl」の頭文字を使用

### XAMPPのメリット
PHP開発環境構築 = XAMPP これが過言ではない
WebサーバーやDB、PHPを個別にインストールしなくてもXAMPPをインストールすればすべてそろうので超らくちん。XAMPPだけあれば開発できる。さらに便利にしたい場合、これに加えてLaravelとかのフレームワークをインストールする。
W

元記事を表示

2022年に開催される全国のPHPカンファレンスのまとめ

# 2022年に開催される全国のPHPカンファレンスのまとめ

## [PHPerKaigi 2022](https://phperkaigi.jp/2022/)
– 開催日 : 2020年4月9日(土)~4月11日(月)
– 開催場所 : 練馬区立区民・産業プラザ Coconeriホール・ニコニコ生放送(ハイブリッド開催)
– Twitter : https://twitter.com/phperkaigi
– ハッシュタグ : [#phperkaigi](https://twitter.com/hashtag/phperkaigi?src=hash)

## [PHPカンファレンス沖縄 2022](https://phpcon.okinawa.jp/)
– 開催日 : 2022年7月予定
– 開催場所 : 沖縄県内の会場で調整中
– Twitter : https://twitter.com/phpcon_okinawa

## [PHP Conference Japan 2022](https://phpcon.php.gr.jp/2022/)
– 開催日 : 2022年9

元記事を表示

WordPress 始めた時に読む

### PHPのよく使う関数
* printf
* sprintf
* function_exists
* isset
* empty
* in_array
* count
* array_shift
* implode
* var_dump
* array_key_exists

### よく使うサイト
* [WordPressCodex](https://wpdocs.osdn.jp/Main_Page)
* [WordPressCodex テンプレートタグ](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0)

### オブジェクトの扱い

“`php
例)オブジェクトからデータを取り出す
$postdata = get_post(3); // 投稿ID3の記事を指定して投稿データを取得する
echo $postdata->post_title; // 投稿日時を表示
echo $postdata->post_date; // 投稿日

元記事を表示

WordPressの記事の見出しを正規化する

### 見出しってよくわかってない?

なんとなく、昔からある とか

とりあえず、<h1>が最初の見出しだな、とか
CMSで書いているとおかしくなるので、
正規化できるようにしました。

:::note info
この記事も、わざと見出しがわかってないフリして記述しています。
:::

# 対象

– HTMLの見出しの仕組みをよくわかってない社員や記事執筆者がいる方へ
– 自作テーマを使用中

## 最適化をする

ここにおいては、最大の見出しレベルは <h3> と仮定して
<h1> もしくは <h2> レベルのを強制的に <h3> にして
それ以下のレベルの見出しも適切に置換する非常に単純な記述です

ここでは、サイトのタイトルを <h1>、記事のタイトルを <h2> で既に使用してしまってる場合を想定しています。

“`single.php

Laravel(7.x) Database:seeding 個人的まとめ

## 基本的なシーダーファイル作成コマンド
“`php
php artisan make:seeder UserSeeder
“`

## ファクトリーを使用する
50人分ユーザーを作成し、それぞれにリレーションをアタッチします。
“`php
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\User::class, 50)->create()->each(function ($user) {
$user->posts()->save(factory(App\Post::class)->make());
});
}
“`

## 追加のシーダーを呼び出す
簡潔に書けて、簡単に呼び出せます。
“`php
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call([
UserS

PHPのクラス、インスタンス、継承について

# クラスとは
“`クラス“`とは***変数、定数、関数をひとまとめ***にしたものです。

ex)
変数/定数->プロパティ
関数->メソッド

# オブジェクト指向
“`オブジェクト指向“`とは***役割を分けていくイメージ***です。
例えば漫画のワンピースで例えると、
航海士、医者、船大工、コックなどそれぞれ役割がありますよね。
航海士クラス、医者クラスのようにクラスを分けていくことです。

Rubyの資料ですが、参考にしてみてください。

https://qiita.com/Hashimoto-Noriaki/items/a9cec16753db70c52033

# オブジェクト指向の3大要素
3大要素は下の3つです。

1.“`カプセル化“`
メソッドなどを定義した役割を分けることです。

2.“`継承“`
クラスや関数を引き継ぐ役割があります。

3.“`ポリモーフィズム“`
同じ役割のものでも新しい役割ができていくイメージです。

# 便利なブログ
わかりやすいブログなので参考にしてください。

https://shimooka.hatebl

Laravel のメールアドレスチェック

# 経緯
Laravelを使用しているシステムから大量のエラーメールが送信されていました。
結論から言うとメールアドレスが RFC 2822 で規定した形式になっていなかった為に発生したエラーです。

### Laravelのメールアドレスチェック
“`
local.ERROR: Swift_RfcComplianceException: Address in mailbox given
[ someone@hugahuga.com ] does not comply with RFC 2822,
3.6.2. in /var/www/html/hogehoge/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php:355
“`

上記の例でいうとメールアドレスの前後にスペースが入っていました。
LaravelのSwift_Mailerってメールアドレスの形式チェックを行うんですね。。。

### 対応
事前にメールアドレスのチェックを行ってエラーがあればメール送信処理を

PHPのクラスメンバへのアクセス修飾子【個人的なお勉強アウトプット】

# 引用記事

public, protected, privateを決める4ステップ

PHPも他のプログラムと同じく、アクセス修飾子を使える。
public、protected、private。
上記いずれかをプロパティやメソッド、定数に指定することでアクセス権を定義することができる。

## アクセス権の種類
### public
クラスのメンバ(プロパティ、メソッド、定数)はどこからでもアクセスが可能。
親子関係だろうが、外部クラスからだろうが。

### protected
protectedで宣言されたクラスのメンバ、そのクラス自身と、親子関係にあるクラスのみアクセスが可能。外部クラスからはアクセスできない。

### private
praivate宣言されたクラスのメンバは、そのクラス自身のみがアクセス可能

## アクセス権の決め方
アクセス権の範囲が広ければ広いほど便利に見えるが、影響力の大きさから改変がしにくくなる不便さがあり、余計なアクセス権は想定外の場所の不具合を生む原因にもなりかねない。そのため、できるだけ狭い範囲で作れると良い。

基本はpriv

CakePHP4 containで二つ先のテーブルが取得できない

## 環境

PHP 8.1.4RC1
CakePHP 4.3.6

## 想定

CakePHPではアソシエーションを用いることで以下のようなSQLに対して、次のようなオブジェクトでデータを扱える。

“`sql:SQL
SELECT * FROM A JOIN B ON B.id = A.id JOIN C ON C.id = B.id
“`

“`php:CakePHP
$a->belongsTo(‘b’, [‘className’=>’B’, ‘bindingKey’=>[‘id’], ‘foreignKey’=>[‘id’]]);
$a->b->belongsTo(‘c’, [‘className’=>’C’, ‘bindingKey’=>[‘id’], ‘foreignKey’=>[‘id’]]);
$data = $a->find()->contain([‘b’, ‘b.c’])>all();
“`

“`php:var_export
object(App\Model\Entity\A) id:0 {
‘id’ => 1,
‘name’ => ‘

Laravel初心者わい「このベストプラクティス集ええやん」

## はじめに
こんにちは。WEBエンジニアのmasakichiです。

Laravelって自由度が高く拡張しやすい反面、「コードの書き方が煩雑化しやすい」と感じたことはありませんか?

そんな方に向けたおすすめのGitHubリポジトリ[laravel-best-practices](https://github.com/alexeymezenin/laravel-best-practices)を共有したく記事にしました。

## 記事の対象者
– これからLaravelを勉強したいと思っている人
– Laravelの経験はあるけど、より良質なコードを書きたいと思っている人
など

## この記事を書いた経緯
ネット上にはさまざまなLaravelのベストプラクティスがありますが、個人的にいちばんシンプルですっきりとまとまっているのが今回紹介するものです。
同ベストプラクティスをすでに共有しているQiita記事や他のネット記事もたくさんあると思いますが、改めていまLaravelを学んでいる同士にこのベストプラクティスの存在を知って欲しいなと思い執筆しました。

## laravel-be

[Laravel] EloquentUserProviderを継承して、独自のGuardを定義する

## 概要

EloquentUserProviderを継承して、独自のGuardを定義をします。

定義することによって、例えば、以下のよくあるユースケースの例のような、認証の微妙なカスタマイズが可能となります。

– 非会員であるユーザは、ログイン不可
– 非アクティブなステータスのユーザは、ログイン不可
– etc…

### 具体的には

やることに関しては、公式の「認証」>「カスタムユーザープロバイダの追加」のあたりが該当します。

https://readouble.com/laravel/9.x/ja/authentication.html

`config/auth.php`で定義している`driver`を、`’eloquent’` (`EloquentUserProvider`)ではなく、拡張したものを使用するのがゴールです。

“`php:config/auth.php
‘providers’ => [
‘users’ => [
‘driver’ => ‘eloquent’,
‘mode

PDOでの文字化けの原因と対処法

DBinfo.phpで文字コードがutf-8になっている

utf8mb4に修正する

これでMYSQLから出力した時に文字化けしなくなる

PHPでYoutubeからタイトルとサムネイルを取得

YoutubeAPIを使ってYoutubeのURLからタイトルとサムネイルを取得する機能を実装したので備忘録として残しておく。
基本的には以下のYoutube動画を参考にした。

⇩作成したサービス

https://qiita.com/cookiesand1023/items/4aa52d9c4c5934c067c8

# YoutubeAPIキー取得
Google Cloud PlatformからYoutubeのAPIキーを取得する。
ここでは説明を省く。

今回はAPIキーを実際の処理の中で変数として持たせてしまっているが、Laravelを使用する場合.envに記載する。

# 実装
App\LibにYoutube.phpを作成し、ここでAPIと連携する。
今回は作成したサービスの都合上、json形式で値を返す。

“`App\Lib\Youtube.php
namespace App\Lib;

class Youtube {

// Youtubeの

【メモ】PHPフレームワークLaravelの概要を学ぶ

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。

# Laravelとは
PHP界隈で世界一使われているフレームワーク。比較的新しいのにすでに人気一位なので今から学ぶのであればLaravelが無難そう。
cakePHPもかなり人気ではあるけど追い越された立場なので今回は調べない。それぞれ特徴があるけどとにかく今は無難さ重視でLaravelのみ調査。

### Laravelの誕生(激薄小話)
Laravelを考えた人が.NETの開発者の一人らしい。.NetはC#のフレームワーク。唯一経験のあるC#に関連付けできるところがちょこちょこあったのでLarvelできるようになれば似たような感じで.Netでwebページ作ったりAPIを作ったりできるかも

# Laravelの特徴(メリット)

### 学習難易度が低い
すごく主観的だと思うけどLaravelは比較的わかりやすいという発言が多い。
また世界一のフレームワークだからネットにたくさん情報があるようです。

### MVCアーキテクチャ
LaravelはMVCモデルを採用しているフレームワーク。明確に各層を分けることで各層

PHP5.6でOpenssl1.1.0に対応する

# はじめに
サーバーAのSSL証明書をLet’s Encryptに変更後、サーバーBからサーバーAのapiを叩くと以下のエラーが返ってきた。
“`
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /var/www/hoge/class/Net/Socket.php on line 108
PHP Warning: fsockopen(): Failed to enable crypto in /var/www/hoge/class/Net/Socket.php on line 108
PHP Warning: fsockopen(): unable to connect to ssl://fuga.jp:443 (Unknown error) in /var/www/hoge/class/Net/Socket.php on line 108
“`
参考記事にあるように、今回はサーバーBのルート証明書が古かった。
参考:https://qiita.com

【コラム】プログラミング未経験者が独学で4か月間勉強した軌跡

今回の記事はコラム的な内容になります。
ITエンジニアへの転身を目指し、2021年11月29日よりプログラミングの学習を開始し、4か月が経ちました。
今回はこの4か月間の軌跡を記事にまとめたいと思います。

# どうしてこの記事を書こうと思ったか

1. 記事を書くことで自分自身、今までやってきた内容を整理しておきたかった
2. これから就職活動をはじめるにあたって、面接官から勉強してきた内容を聞かれる機会があると思うので、その対策として
3. 自分のように未経験者からエンジニア転身を目指す方の参考に少しでもなればという思い

# 本編

## 2021年10~11月(学習開始前)

前職を辞め3年ぶりに地元に帰郷。そのときは特にやりたい仕事もなかったので、「前職の経験を買ってくれるそこそこの地元企業でもあればな~」なんていう意識の低さで職探し中。

そんな就職活動の傍らで、暇つぶしにはじめたprogateにハマってしまいました。(前職でも業務で簡単なマクロを組んだりして、元々プログラミングに興味はあった)

**自分 「プログラミング結構面白いし、これ仕事にできたら楽しいかも!でも

phpプロダクトのDBを軽量化のためデータをたくさん消した話

# はじめに

最近大学4年目になったShuhei-ppです。
今回でqiita2回目の投稿になります。
前回の投稿では2,3日に1回投稿するみたいなことを書きました。しかし精度の低い情報も書いてしまうかもな、と思いなかなか投稿できませんでした。

そんな私ですが、今勤めさせていただいているところ(バイト)のプロダクトで本番DBの容量がいっぱいになってきて軽量化のためデータをたくさん消したのでそのプロセス等を共有できたらと思います。
初心者のため間違い等あると思いますがよろしくお願いします🙇‍♂️

# 環境
>php:5.3.3
mysql:5.7.17
使用FW ethna

# 調査、実行順序
1. 容量の大きいテーブルからデータを消すテーブル候補を出す
2. PHP(phpstorm)でテーブル名で検索し使用されている箇所と使用用途の洗い出し
3. 使用しないデータはダンプし、削除
の順でやっていきました。

# 1. データ削除のためのテーブル調査
この調査ですが、テーブル容量の方面からの調査を行いました。
まず容量が上位のテーブルを検索しました。

クエリはこんな感じです。

PHPerKaigi 2022に参加してきました。

## はじめに

PHPerKaigiとは

>PHPerによるPHPerのためのお祭り

2022/04/09, 10, 11開催です。

https://phperkaigi.jp/2022/

## PHPerチャンレンジ

開催期間中に公式ページ、スポンサーブログ、会場、twitterなどにシャープから始まる文字列が記載されており、それを探し出して専用のフォームに投稿して点数を稼いで準備を競うゲームです。
過去にも開催していて大変盛り上がりました。
僕も過去に参加したことがありましてその時の記事はこちらです。

https://qiita.com/yamamoto_hiroya/items/d60846f1837e94d059d9

今年は健闘し4位まで上がることができました!
PHPerチャンレンジについてはまた別途記事を書こうと思います。

![スクリーンショット 2022-04-11 18.51.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67471/89c4a0cc-d119-2