- 1. Phinxでwarning no environment specified, defaulting to: developmentが出る時の対処
- 2. PHPの数値計算メソッドが物足りなかったため自作
- 3. PHP 本格入門 ㊤
- 4. phpでdyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylibが出た時の対処法
- 5. 【PHP8】 PHP8技術者認定上級試験 ベータ試験を受けてきた
- 6. Laravel ファクトリーを利用したシーディング処理まとめ
- 7. 「20分でLaravel環境を構築するDockerハンズオン」で作成した環境にphpMyAdminを導入する
- 8. PHPのアップグレード方法(php72->php73)
- 9. 初心者用PHP正規表現(preg_replace)
- 10. PHP 簡易掲示板作成 データ保存編 #1
- 11. 【AWS】実務でEC2にLAMP環境を構築した流れをザックリかつわかりやすくまとめた
- 12. 【Laravel】外部blade.phpファイルの読み込み
- 13. PHP参照渡しとforeach
- 14. PHP バリデーション
- 15. Laravelでお気に入り機能
- 16. 備忘録 PHP クラス インスタンス プロパティ
- 17. LaravelのHTTPクライアント(Illuminate\Support\Facades\Http)でcURLのCURLOPT_SSL_VERIFYPEERをfalseにしたい。
- 18. 【PHP】parallelでマルチスレッドを試そう?
- 19. Phalcon PHPを今は新規で使うべきでない理由
- 20. [Laravel] Eloquent::when() を使う
Phinxでwarning no environment specified, defaulting to: developmentが出る時の対処
## 結論
-eオプションで環境指定できたようです
https://book.cakephp.org/phinx/0/en/commands.html#the-migrate-command“`
$ phinx migrate -e development
“`当たり前すぎたのか情報が全然見つけられなくてハマったので一応…
PHPの数値計算メソッドが物足りなかったため自作
#本記事の環境
ホストOS:Windows 10
ゲストOS:CentOS 7
VirtualBox + Vagrant
Tera Term
remiリポジトリ
php7.3#前段:PHPの数値計算系メソッドとは?
PHPには四捨五入、切り上げ、切り下げのメソッドが存在します。
※四捨五入:round、切り上げ:ceil、切り下げ:floor#要件1:数値の丸め方について
* 「四捨五入」「切り上げ」「切り下げ」と「切り捨て」がしたい。
* 有効桁数を指定したい。###問題
* 他言語にある「切り捨て」がPHPにはなかった。
* roundは、有効桁数を指定できるが、ceilとfloorはできない。
※round([対象値], [有効桁数]);
有効桁数:小数第一位が0、小数部はそこからインクリメント、
整数部はデクリメント。
※ceil([対象値]);
※floor([対象値]);###対処方法
* 「切り捨て」メソッドを作る。
* 有効桁数を指定できる「切り上げ:ceil」「切り下げ:floor」メソッド
PHP 本格入門 ㊤
現場で本格的にPHPを書くことになったので、書籍をザッと読んで気になった箇所をまとめることにした。
![No Image](https://images-na.ssl-images-amazon.com/images/I/41zPn5lFAgL._SX394_BO1,204,203,200_.jpg)
#chapter 1 はじめてのPHP
+ WEBの基本的な仕組み
+ WEBクライアントとWEBサーバーの関係性
+ PHPの環境構築などが記載されている。詳細は割愛。
#chapter 2 PHPの基本構文
####2-1-2 変数の命名規則
+ 変数名はスネークケース(アンダースコア)もしくは**キャメルケース**
+ 例) \$total_price, \$totalPrice
+ 近年一般的なのは後者のキャメルケース####2-1-3 変数の値を出力する ー echo命令、print命令
+ 変数の値の出力は以下の通り“`php:
= echo $変数名 ?>
`
phpでdyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylibが出た時の対処法
`brew switch openssl 1.0.2s`で直るという記事が多いが、2021年2月時点でのbrew(バージョン3.0.0)ではbrew switchコマンドは使えない
https://cmichel.io/how-to-install-an-old-package-version-with-brew/
を参考に1.0.2sのopensslをインストールしてphpを入れ直したら、直りました(`brew uninstall php`→`brew install php`)
【PHP8】 PHP8技術者認定上級試験 ベータ試験を受けてきた
昔[PHP7技術者認定初級試験](https://qiita.com/rana_kualu/items/130fab56656c3e450d61)を受けて合格しましたが、先日それに引き続いて[PHP8技術者認定上級試験](https://www.phpexam.jp/2020/12/11/php8/)というものが発表されました。
> 一般社団法人BOSS-CON JAPAN(代表理事:吉政忠志、所在:東京都世田谷区、以下「BOSS-CON JAPAN」)は、BOSS-CON JAPAN内組織であるPHP技術者認定機構がPHP8技術者認定上級試験を2020年秋に実施することを発表しました。
> 本ベータ試験を2021年2月7日に東京で開催します。このベータ試験を受けてきたのでその感想です。
# 試験内容
・問題数30問
・制限時間135分
・7割正解で上級、5割正解で準上級認定
・受験料金は税抜15000円、学割あり。
・β試験は5000円。合格認定は本試験と同じ。
・ほぼ3択。たまに4択があった。複数選べはなかった。いきなり[公式](https://www.phpexa
Laravel ファクトリーを利用したシーディング処理まとめ
# Laravel ファクトリーを利用したシーディング処理まとめ
Laravelにて、DBを利用する際、ダミーデータを手軽に用意してくれる機能があります。
以下にまとめます。## 補足
『PHPフレームワーク Laravel実践開発』 著:掌田津耶乃
の18ページに記載されているSQLを、シーディングとファクトリーを利用して実行するという試みです。## バージョン
Laravel バージョンは6.x## 詳細は以下
[シーディング](https://readouble.com/laravel/6.x/ja/seeding.html)
[ファクトリー](https://readouble.com/laravel/6.x/ja/database-testing.html)## 前提
以下の様なテーブルと、ダミーデータを復数作成したい。“`sql
CREATE TABLE `people` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` TEXT NOT NULL,
`mail` TEXT,
「20分でLaravel環境を構築するDockerハンズオン」で作成した環境にphpMyAdminを導入する
### はじめに
現在Dockerを学習しているのですが、[「20分でLaravel開発環境を構築するDockerハンズオン」](https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4)という記事に大変お世話になっています。
今回は上記の記事に従って構築した環境に、追加でphpmyadminを導入してみました。dbコンテナを生成し、”[GitHubにpush](https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4#github%E3%81%ABpush)”までのハンズオンを終わらせた想定です。
#### コンテナ構成
“`
├── app
├── web
├── db
└── phpmyadmin <-今回追加 ``` #### ディレクトリ構成 ``` . ├── README.md ├── infra │ ├── mysql │ ├── nginx │ ├── php │ └── phpmyadmin <- 追加 │ └── ses
PHPのアップグレード方法(php72->php73)
php7.2のセキュリティサポート切れを考慮した、phpのアップグレード方法。
php7.3のセキュリティサポート切れも見えてきたため備忘録を兼ねて投稿。
#本記事の環境
ホストOS:Windows 10
ゲストOS:CentOS 7
VirtualBox + Vagrant
epelリポジトリ
remiリポジトリ
Tera Term
php7.2#アップグレード方法
* ホストOSからゲストOSを起動する。cd [vagrantホーム] vagrant up* ゲストOSにアクセスするためTera Termを起動する。
* インストールされているphpのバージョンを確認する。php -v yum list installed php** 一旦phpを削除するため、必要ならphp.iniのバックアップをとる。
find / -name php.ini -ls cp -p [バックアップするphp.ini] [任意のバックアップ先]* インストールされているphpを削除する
yum
初心者用PHP正規表現(preg_replace)
正規表現てむずいなと感じたので、忘れないうちにメモとして残します。
今回はPHPの正規表現の``preg_replace``を使っていきます。
文字通り指定した文字を書き換えるものです。
百聞は一見に如かずなので、以下を例に自分の用途に合わせて行ってください。
```
https://firebasestorage.googleapis.com/v0/b/project-auth.appspot.com/o/images/kLF0eEW2D2QfQEfO95wnpQahODl2/image.jpg?alt=media&token=5d91bc75-e63d-4594-bf5d-265336ef925e
```このようなURLの``images/``を``images%2F``に変換します。
```regex.php
$valid_url=https://firebasestorage.googleapis.com/v0/b/project-auth.appspot.com/o/images/kLF0eEW2D2QfQEfO95wnpQahODl2/image.jpg?a
PHP 簡易掲示板作成 データ保存編 #1
#目標
・「名前」と「コメント」の入力フォームから値を送信・テキストファイルに「1投稿につき1行」で保存
1. テキストファイルを指定する
2. 指定したテキストファイルを開く
3. テキストファイルに書き込む
4. テキストファイルを閉じる・保存フォーマット
投稿番号<>名前<>コメント<>投稿日時
`$num."<>".$name."<>".$str."<>".$date;`
1. 「名前」と「コメント」を受け取る
2. 受け取った値を変数に代入
3. 日時を取得する
4. 投稿番号を取得する
5. 1~4を組み合わせて投稿を作成```:sample.txt
1<>yuya<>完成<>2021/2/8 10:13:16
2<>yuya<>完成<>2021/2/8 10:13:22
3<>yuya<>完成<>2021/2/8 10:13:25
```
#「名前」と「コメント」の入力フォームから値を送信
入力フォームを作成```html:HTML
【AWS】実務でEC2にLAMP環境を構築した流れをザックリかつわかりやすくまとめた## はじめに
最近、実務でAWS(EC2)にCakePHP用の開発環境を構築するタスクを担当したので、その時に行ったざっくりした作業の流れをまとめておきます。※著者の業務での構築手順・仕様なのでこれがデファクトスタンダード・ベストプラクティスではないと思います。
※あくまで一例として読んでいただければ嬉しいです
※新規開発ではなく現行環境のリプレイスです## 構築する環境
||種類|バージョン等|
|:--:|:--:|:--:|
|OS|Linux|Amazon Linux 2|
|Webサーバー|Apache|2.4.46|
|DBサーバー|MariaDB|10.2.10|
|アプリケーション|PHP|5.4.16|※あとはmemcachedも
## AWS(EC2)で環境構築するざっくりした流れ
### VPCを作成
VPCはAWS上で仮想化されたネットワークのこと。
このネットワークを介してEC2やRDSなどをインターネットなどと通信する。
AWSで作業する際にまずVPCの作成から始める。### サブネットを作成
サブネットはVPCを細かく区切ったネットワ
【Laravel】外部blade.phpファイルの読み込み
#はじめに
知識を整理するための個人的な備忘録です。今回は、`header.blade.php`ファイルを複数のページで使い回したいと思います。
#方法
###1.`resources/views`の中にフォルダを作成
フォルダ名は`shared`としましたが、任意のフォルダ名で問題ないです。###2.`shared`フォルダの中に`header.blade.php`ファイルを作成
`タグが既に記載されているので、これらを書く必要はありません。
`header.blade.php`ファイルですが、読み込み先のファイルに``タグや`###3.読み込む
`header.blade.php`を読み込みたいファイルの中に以下のコードを書きます。```php
@include('shared.header')
```#参考
[【Laravel】外部PHPファイルの呼び出し方法【5分で完了】](https://seita-limitless.net/laravel-external-php-file/)
PHP参照渡しとforeach
## 初めに
記事を読んでいただきありがとうございます。
一月に未経験で就職したヤマウチです。
ここでは僕が勉強の中で関心を抱いたことに関して、アウトプット感覚で記事を書います。
記事に関するフィードバック等いいただけると幸いでございます。## 今回の記事について
さて、今回の記事についてですが、題名にもあります通り「PHP参照渡しとforeach」について私なりにまとめましたので共有させていただきます。
この記事を読み進める前に[PHP 参照渡しを試しに使ってみたよって話](https://qiita.com/MitsukiYamauchi/items/78a5eb6698c19a55f4c4)を読んでいただけますと幸いです。## foreach構文
早速foreach構文に関する注意点をご紹介します。```php
$numbers = [1, 2, 3, 4];foreach ($numbers as &$number) {
$number = "「{$number}」";
}echo '
';
var_dump($numbers);
e
PHP バリデーション
##バリデーション
PHPでの実装の際にバリデーションをかけてログイン、ユーザー登録の制御をしたいと思ったことはないでしょうか?今回は、ユーザー登録の際に自分が実装した方法を紹介します。
まずユーザー登録用のファイルsignup.phpとバリデーション用のファイルvalidate.phpを用意します。
```signup.php
Laravelでお気に入り機能
## はじめに
サービスの概要としては、本のデータがあって、user機能があって、userは本にブックマーク(お気に入り機能)をつけることができるという感じです。##実装
```php:Book.php
public function bookMarks(){
return $this->hasMany('App\BookMark');
}
```
```php:User.php
public function bookmarks(){
return $this->hasMany('App\BookMark');
}
```
```php:BookMark.phppublic function book(){
return $this->belongsTo('App\Book');
}public function user(){
return $this->belongsTo('App\User');
}
```
関連はこのような感じになってます!```ph
備忘録 PHP クラス インスタンス プロパティ
```php:index.php
name = 'FISH'; //プロパティに値をセット(プロパティ名に$は不要)//
echo $fish->name; //セットした値にアクセス($は不要)//
//結果: FISH
?>
```
LaravelのHTTPクライアント(Illuminate\Support\Facades\Http)でcURLのCURLOPT_SSL_VERIFYPEERをfalseにしたい。
# はじめに
こんにちは。Laravelで日に日に新しいもの出てきて(見つけて)、追いつくのに必死の筆者です。先日cURLで書かれているコードをLaravelに踏襲する機会がありました。
その際に、Laravelで`CURLOPT_SSL_VERIFYPEER`のオプションの付加方法について、うれしいことに既にメソッドとして切り出して用意されていたので、共有します。
# cURLの場合
```php
$url = 'https://example.com';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // ←ここ
$response = curl_exec($curl);
curl_close($curl);
```# Laravelの場合
```php
$url = 'https://example.com';
$response = Http::withoutVe
【PHP】parallelでマルチスレッドを試そう?
# はじめに
PHPは、プログラムを上から順に実行するシングルスレッドの言語です。
今回は、**『[parallel](https://www.php.net/parallel)という拡張モジュールを使うことで、PHPでマルチスレッドを扱える!』**そうなので、試したいと思います?## parallelとは
- PHP拡張モジュール
- PHP 7.2以降で動作
- PHP ZTS版でのみ動作
- ~~CLIからの実行のみ動作~~ → そんなことないらしい(現在、調査中)
- 導入が少々手間※マルチスレッドと言えば[pthreads](https://www.php.net/manual/ja/intro.pthreads.php)が使われているそうですが、「この拡張機能はメンテナンスされておらず、終了していると考えられます。」と書かれています。PHP 7.4以降は、サポートしていないということみたい。。
# 準備
### 使用技術
- php
- Docker### ディレクトリ構成
```bash
.
├── Dockerfile
└── src
└──
Phalcon PHPを今は新規で使うべきでない理由
こんにちは。
今日は業務で3年ほどPhalconを使っている私が今後Phalconを使おうと思っている人に向けて、使うべきでない理由をだらだら書いたものです。## 注意
この話の前提として、現在(v4)の話をしています。
v5(PHPコード版)が開発され始めているのもあり、v5が出たらこの状況は変わる可能性があります。## 本家のバグ修正が遅い、メジャーバージョンアップによるバグが多い
正直これに尽きる気がします。
Phalconは2021/02/07現在、4.1.0が最新です。
4.1.0は比較的最近出ているのですが、正直いま安定しているのは3.4.5です。
4系に上がったときにPSRに寄せようとしたり、色々と努力がされているのですがその際にバグが結構生まれてしまってるなと感じます。
特にPhalconはPHP拡張であるのもあってide-stubsという公式のIDE向けのhelperの利用は必須です。しかしこのide-stubsもzephirのコードをparseして生成しているのもあって漏れがあったり、そもそもzephir側の静的チェックが出来てなかったりします。(In
[Laravel] Eloquent::when() を使う
### when()メソッドを使う
例えば下記のように、if文を使ってクエリを書くコードがある。
```sample.php
$query = User::query();if(request('filter') == 'likes') {
$query->where('likes', '>' , request('likes_amount', 0));
}
```上記コードを、when()methodを使って、より見やすく、”Laravel Way”で書く。
when()メソッドの第一引数がtrueの場合実行される。```when_sample.php
$query = User::query();$query->when($request('filter') == 'likes', function($q){
return $q->where('likes', '>', request('likes_amount', 0));
});$users = $query->get();
```###その他例
Query Builderでも使える