PHP関連のことを調べてみた2021年01月02日

PHP関連のことを調べてみた2021年01月02日

【初心者】【PHP】strlenとmb_strlenを勘違いした話

##結論
初心者が調子づいてきた頃にやりがちだけど、
具体的な言葉で検索しようね、そして説明はよく読もうね! と言う話。

##詰まりの始まり
私がPHP開発をしていたある日、処理の中で文字列の文字数カウントが必要になりました。
##「PHP 文字列 長さ」で検索する
すると出てきたのは

* 文字列の長さを取得(strlen, mb_strlen) →というまとめ記事
* strlen – Manual – PHP →というPHP公式ページ
* mb_strlen – PHP →PHP公式ページ

それを見た素人はこう思いました。
###「ははーん、strlenを使えばいいんだな?」
殴りたくなる思考回路ですが、こんなクソとぼけたゴミがいるのも事実です。

**そんな複雑ではない関数だろう**と思い込み、
公式の説明など読まないままstrlenを自分が作成していた処理に当て込みました。

##一向に想定とは違う動きをするstrlen
“`php5
strlen(‘あいうえお’);
“`
5を返すはずのこの関数、

“`php5
int(15)
“`
一向に3倍の文字数を返すの

元記事を表示

phpの仕様メモ

phpの変数名は大文字小文字を区別する

元記事を表示

laravel DBファサードのstatementメソッドが書いてある場所を探してみた

# 目的

– DBファサードのstatementメソッドを使用する機会があり当該メソッドは内部でどのような処理をしているのか気になりまずはメソッドが記載されている場所を探してみた

# 環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.8 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする](https://qiita.com/miriwo/

元記事を表示

※学習用メモ デザインパターン:Singleton編[PHP]

# Singletonパターンとはどういうものか

Singletonとは**一つのもの**という意味です。

>Singleton パターンとは、そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのことである。(wikipediaより)

ポイントとしては、**指定したクラスのインスタンスが1つしか存在しないことを保証する**ということです。

インスタンスの状態を保持したかったり、クラス間で共通のメソッド・プロパティにアクセスしたい場合に使用されることが多いです。

# Singletonパターンを用いるメリット

・同一インスタンスを使いまわすので、インスタンスの状態を保持したまま他の箇所で使用できる

[参考]
https://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
https://qiita.com/shoheiyokoyama/items/c16fd547a77773c0ccc1
https://www.techscore.com/tech/Desig

元記事を表示

phpの比較演算子「==」は予想外の動きをするで!比較は「===」を使おう

### 比較演算子「==」は型変換を自動で行ってしまう。
型の扱いが非常に曖昧であることで有名なPHPでは、他の言語と同じく「==」を使って比較を行うと、**型変換を勝手に行って比較**を行ってしまいます。

https://www.php.net/manual/ja/language.operators.comparison.php

“`

元記事を表示

PHPでデータベースにアクセスする方法

PHPでデータベースにアクセスするコードを書き留めておきます。

##まずは接続のセットアップをします

“` PHP
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
//例外処理対応を有効にする
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERR

元記事を表示

PHPをvscode remote containerで開発したかった

はじめLaravel入れていたが、template的に使えるものが欲しかったので作った。

https://github.com/moeyashi/template-php-on-vscode-remote-container

Laravel入れたバージョンも作ろうかなと思います。

## 2020-01-02 追記

Laravel入れました。勢いあまってlaravel/ui authまで入った。

https://github.com/moeyashi/template-laravel-on-vscode-remote-container

元記事を表示

【PHP学習メモ】preg_match 定数の指定

あけましておめでとうございます。
あっという間に2021年ですね。
善き一年になりますように。

【今日の学び】
preg_match は、正規表現によるマッチングを行うことができます。

““
【構文】
preg_match ( string $pattern , string $subject [, array &$matches = null [, int $flags = 0 [, int $offset = 0 ]]] ) : int|false
““
引数 $pattern には、検索する文字列を、 $subject には、検索対象の文字列を、[] 部分はオプションで省略可能です。

〜PHPマニュアル〜
https://www.php.net/manual/ja/function.preg-match.php

今回学んだのは、検索する文字列に、『定数』を指定する方法です。

““
・・・省略・・・
// 定数
const THREE_TIMES_RATIO_DAY = 3;
const FIVE_TIMES_RATIO_DAY = 5;

・・・省略・・・

元記事を表示

dockerに苦労した話

# 今回の教材
[Laravelでテスト駆動開発を学ぼう!](https://www.techpit.jp/courses/92)

# 課題に取り組む前にLaravelのMigrateで沼にハマる
## Reset
docker desktop のアンインストール
スタート -> 設定 -> アプリ(ふつーに消えてくれる)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/aab44340-803a-9af5-8b81-adf328c3831e.png)
explorerで普通に消そうとするとブルースクリーンが出て再起動になり、永遠に消せない(この時代にブルースクリーンなんて久しぶりに見たわ…)。powershell管理者モードでバチンと消すしか無いらしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/b8e2c71b-8b2e-cfe3-1ef6-af13c89

元記事を表示

型宣言についてまとめる

これまでしてこなかった型宣言について
公式の内容を纏めて自分なりに解釈してみました。

参考: [PHP.net](https://www.php.net/manual/ja/language.types.declarations.php)

#なぜ型宣言をするのか?
そもそもの型宣言とはなにか?
>関数のパラメータや戻り値、 クラスのプロパティ (PHP 7.4.0 以降) に対して型を宣言することができます。 これによって、その値が特定の型であることを保証できます。 その型でない場合は、TypeErrorがスローされます。

自分なりに解釈すると
パラメータや戻り値が定義されていることで求めた型以外が参照された場合に
エラーを返すことによって大きなバグになることを事前に防いでいるのかと考えます。
またバグ出た際の原因追求もしやすくなるのかなと思います。

わかりやすく言うと
スーパーとかがイメージしやすいのかなと!
お酒コーナーにはお酒をおいてあるのでそこから持ち出したら
もちろんお酒を持っていくことになりますよね!
お菓子コーナーから商品を持ち出したらそれはもちろんお菓子です。

元記事を表示

MySQLデータテーブルにPHPで作成したフォームのデータを書き込む

##参考
・https://qiita.com/ho-gaku/items/914e80a955b510538377
・https://qiita.com/harufuji/items/d033d3480a0c791973ae

##手順
前回同様に、
1.データベースに接続
2.接続エラー処理
3.テーブルデータ取得
4.表示処理
5.データベース接続終了

新たに、
1.フォーム作成
2.フォームに入力されたデータを受け取ってDBに接続し書き込む。

##前回のコードサンプル
“`php

元記事を表示

laravel MySQL tinyInteger型のカラムはchangeできない

# 目的

– マイグレーションファイルを用いてTinyInt型のカラム情報を変更しようとしたけどエラーが出たのでまとめる

# 情報

– 今回の事例はすでに作成されているTinyInt型カラムのコメントを変更しようとした。

# エラーまでの経緯

1. マイグレーションファイルのup側に下記のように記載してカラムのコメントを変更しようとした。

“`php
$table->tinyInteger(‘カラム名’)->comment(‘変更後のコメント’)->change();
“`

1. 下記コマンドを実行してマイグレーションを実行した。

“`terminal
$ php artisan migrate
“`

# エラー

– 下記のエラーが出力された。

“`terminal
Unknown column type “tinyinteger” requested. Any Doctrine type that you use has to be registered with \Doctrine\DB

元記事を表示

Docker環境でDBに接続するとcould not find driverが出たときの対処方法

## DBに接続する処理を作成
“`php
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false
]
);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
“`
## 接続すると下記のエラーが出力された
“`bash
could not find driver
“`
### ドライバが見つからないようなので現在のドライバ

元記事を表示

【Laravel】結局どう違うの?Eloquent, DBクラス, クエリビルダ 前編

## 困りごと
PHP歴3ヶ月、Laravel歴1ヶ月の初学者です。LaravelのDBの操作方法は`Eloquent ORM・DBクラス・クエリビルダ`に分類されます。~~表示されればなんでもOKというから~~レベルを一段階上げていきたい初学者がこれらの違いについてまとめました。

前編:各記述法の違いについて。(今回)
後編:どのように記述法を選択していくのか(次回)

## 開発環境
PHP 7.2.34 / Laravel 6.20.5

## 記述法を比較

①DBファザードは`Illuminate\Support\Facades\DB`クラスによる記述法。
②Eloquent ORMは`Illuminate\Database\Eloquent\Model`クラスを継承する記述法。
それぞれ見ていきます。

###①DBクラスの記述 (DBファザード)
DBクラスによる記述のため`Illuminate\Support\Facades\DB`をuseする。

“`Controller.php
use Illuminate\Support\Facades\DB;
“`
#

元記事を表示

画像ダイエットアプリ「little wings」をリリースしました!!

![https://kiwing.ddns.net/](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246065/d4f6ed15-7994-a82e-432a-d8d3f5768a22.gif)

# みんな使ってね!!\(^o^)/

大晦日ですが、Webアプリ開発しています。
せっかくリリースしたんですが誰も利用してくれなくて泣きそうなのでPRがてら紹介させてください…w

## 履歴

12/20 着想
12/28 v0.1リリース
12/31 v0.4リリース

## 制作までの経緯

最近のスマホカメラの画像って性能が良くなっているので、当たり前に4Kサイズだし、調子に乗って風景とか撮ると普通に1枚**5MB**とかあったりするんすよね。

なので私はWebにD&Dするだけで画像のサイズが半分くらいになる**[kraken.io](https://kraken.io/)**というサービスを愛用していました。画像の劣化も300%ズームして見比べても、よく分からないレベルなのに、ファイルサイズは半

元記事を表示

Amazon Rekognitionを使ってみた

仕事で顔認証を行うことになりAmazon Rekognitionについて試しに使ってみることにした

#### Amazon Rekognition料金
https://aws.amazon.com/jp/rekognition/pricing/

料金はリージョンによってことなりますが、1ヶ月単位で、使用回数数によって金額が違い、1000枚単位金額のようです。
アジアより、米国のほうが安い印象なので、特に違いなければ、安いリージョン使用してもいいかもしれません。

ついでに12ヶ月の無料枠もあるので、気軽に試してみるのもいいかもです

#### Amazon Rekognitionガイド

AWSの公式のセットアップガイドにわかりやすく記載されてます
https://docs.aws.amazon.com/ja_jp/rekognition/latest/dg/setting-up.html

その他こちらの記事なども参考にやっていこうと思います
https://qiita.com/nowmura/items/7d6437298e15d7c9d4d4
https://qiita.co

元記事を表示

PHPでMySQLデータテーブルの表を作成する

##参考
・https://techacademy.jp/magazine/12348

##データベースに接続

MySQL サーバーへの接続をオープンするために[mysql_connect](https://www.php.net/manual/ja/function.mysql-connect.php) メソッドを使用してインスタンスを生成する。host,user,password,nameに接続するサーバーの情報を入れる。
※パスワードが無い場合空白にする。

“` php
$link = mysqli_connect(‘localhost’, ‘root’, ” ,’eccube001′);
//            ↑host   ↑USER ↑PW(空白) ↑DB(名前)
“`

##接続エラー処理
データベースに接続しているかの状況をチャックする。

“`php
// 接続状況をチェックします
if (mysqli_connect_errno()) {
die(“データベースに接続できません:” . mysqli_conne

元記事を表示

作成したPHPポートフォリオをAWSのEC2にデプロイし、公開したい。

## ローカル開発環境
+ Macbook Pro
+ MAMP(XAMPP)

## 使用技術・バージョン
+ PHP…7.4
+ MySQL… 5.7
+ Amazon Web Service
+ EC2、RDS
+ Guthub

## 前提
1. AWSのVPC,EC2,Route53,RDSの設定を終えており、WEBサーバのドメインを取得済である
2. RDSに入れたMysqlのバージョンがローカルの環境に準拠している。(Udemy講座の時点でバージョン指定する)
3. EC2のWEBサーバにSSH接続が出来るようになっている
4. Githubに自分のポートフォリオをpush済。

### 1,2,3が終わっていない場合
– 以下のUdemy講座がおすすめ。
+ https://www.udemy.com/course/aws-and-infra/
+ 時々セールで安くなるので、そのタイミングでの購入を推奨します。

## 手順

### EC2にSSHログインし、サーバの言語を日本語対応化

“`
[MacBook-P

元記事を表示

Docker-composeを使って爆速でPHP+YoutubeDataAPIv3を利用

##はじめに
YoutubeのAPIを爆速で使いたいという方向けの記事です。
とりあえずPHPでYoutubeDataAPIv3を直ぐに使えるようにできます。

事前準備として下の記事を参考にAPIキーを取得しておいてください。
http://piyohiko.webcrow.jp/kids_tube/help/index.html

参考記事
Dockerのディレクトリ構成については下記のものを参考にしました。

##ファイル構成

“`
├── docker-compose.yml
├── nginx
│   └── default.conf
├── php
│   ├── Dockerfile
│   └── php.ini
└── src
├── Youtube.php
├── index.php
“`
treeコマンドについては下記の記事を参考に
https://qiita.com/tatema/items/8a1de3d3b87884cb0d21

元記事を表示

laravel tinyInteger型のカラムのコメントを変更

# 目的

– laravel TinyInteger型のカラムのコメントをマイグレーションファイルで書き換える方法をまとめる

# 環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.8 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする](https://qiita.com/miriwo/items/cd54077aad7e139cf518)

元記事を表示

OTHERカテゴリの最新記事