- 0.1. 【Laravel】Authを使ったログインとユーザー登録
- 0.2. Heroku&Macで個人Webサービスをさくっと開発&リリースするまで
- 0.3. 【PHP】composer require時にPHP Fatal error: Allowed memory size of XXX bytes exhaustedが表示されたら
- 0.4. Woocommerceにプロダクトをphpから複数画像付きで追加する
- 0.5. 「どちらか一方は入力必須」のvalidationをCakePHP3.8で行う
- 0.6. aibo Events API を使って aibo に音声コマンドを実行してもらう
- 0.7. Xampp(Apache+PHP)にてLocalネットワークからGmailが送信できるまで
- 0.8. DockerでRedisコンテナを立ち上げLaravelで読み書きする
- 0.9. PHP7.2 × DockerでgRPCクライアントを使うための環境構築
- 0.10. 【Laravel】シーディング
- 0.11. DockerでPHP7.4のLaravel開発環境を作成
- 0.12. GulpのBrowserSyncとPHPのビルトインサーバを組み合わせる
- 0.13. 【Laravel】Composerを使った環境構築
- 0.14. 【PHP】関数
- 0.15. 【学習記録(PHP)】関数作りの失敗
- 1. 関数は便利で分かりやすくが基本!
【Laravel】Authを使ったログインとユーザー登録
#Authでログイン機能とユーザー登録機能を用意する。
composerでlaravel/uiをインストールし、artisanコマンドでスカフォールドを生成する。“`terminal
composer require laravel/uiphp artisan ui bootstrap –auth
“`
※uiではbootstrapの他に、vueやreactを用いることもできる。
[uiの生成](https://readouble.com/laravel/7.x/ja/frontend.html)
これでログイン機能とユーザー登録機能は用意できたが、このままではデザインがないのでnpmをインストールし、run devでコンパイルしてデザインを付ける。“`terminal
npm install
npm run dev
“`
##データベースの作成
ユーザー情報を保存するためにデータベースを作成する。
今回はmysqlを使う。
mampのスタート画面のtoolsからphpmyadminを開く。
新規作成からデータベース名を埋めてデータベースを作成する。
larav
Heroku&Macで個人Webサービスをさくっと開発&リリースするまで
#はじめに
最近では、HerokuやGithubが無料で使えるので、ある程度の知識があれば無料でWebサービス開発とリリースまで、企業と同様の手法でできてしまう。
ローカル開発環境 ⇔ Githubでソース管理 ⇔ Herokuでホスティング# Macローカルでの開発環境構築
localhostで表示確認できるよう、サーバを動かす“`zsh:Macローカル
$ sudo apachectl start
“`
http://localhost/
にアクセス。
ファイルの実態は「/Library/WebServer/Documents/」
# Macローカルでファイル作成
トップページの素のPHPファイルを作ってみる。“`P
【PHP】composer require時にPHP Fatal error: Allowed memory size of XXX bytes exhaustedが表示されたら
# 環境
– PHP 7.4.5
– Composer 1.10.5# 事象
composer requireしようとしたら、メモリ確保できやんでと怒られた。
https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors を見ろと言われているので、それに従う。“`bash
$ composer require –dev nunomaduro/larastan
Using version ^0.6.1 for nunomaduro/larastan
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4
Woocommerceにプロダクトをphpから複数画像付きで追加する
#はじめに
– wordpressフォルダに配置されることを想定しています。位置が変わる場合はrequire_onceのパスを変更してください。
– POSTでタイトルはtitle,説明はExplanation,画像(複数)はuploadで 受け取ります。使用方法により書き換えてください。
– SKUや価格等は今回使用しなかったため含まれていません。
– 元となったものでは動作確認をしていますが、編集後動作確認をしていません。
– 投稿用に編集しているので、不自然な箇所があるかもしれません。#全体
受け取る側“`php
「どちらか一方は入力必須」のvalidationをCakePHP3.8で行う
# 今回のお題
—
CakePHP3.8を使って実装を進めた際に起きました。
調べてみても意外にヒットしなかったので、自分なりの対処方法を残しておきます。—
## 環境
PHP: 5.6.40
CakePHP: 3.8
OS: CentOS7.2
DB: MySQL5.7.21今さらPHP5.6かよ、というのは置いておき。。
—
## 画面イメージ
—
よくあるこのような画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130324/4ddbe92d-6d59-c057-6819-fb4c670b50e2.png)
今回は身長か体重のどちらかは入力必須(両方入力されていてもOK)というお話です。
—
## CakePHP3実装
—
### model
—
Usersモデルに以下のカラムがある、という前提で進めます。
身長: height
体重: weight“`src/Model/Table/UsersTab
aibo Events API を使って aibo に音声コマンドを実行してもらう
先週、先々週と仮面ライダーゼロワンに
天津垓の相棒である AI 犬型ロボットさうざー役として出演していた aibo。【期間限定配信?】
39話で #aibo 演じるさうざーがキメた変身ポーズの特別配信がスタート?✨
aiboに「ぜろわんにへんしん」「かめんらいだーぜろわん」と声をかけるとゼロワンの変身音にあわせた特別なふるまいを披露してくれます??
8/2までの期間限定です!#
Xampp(Apache+PHP)にてLocalネットワークからGmailが送信できるまで
#背景
完全に備忘録です。私のバイト先で、「ローカルのみで動いているサイトからGmailを送信したい」とお願いされたので、いろいろ調べたことをメモしておきます。注意)
私はサーバーとかセキュリティ初心者です。もしかしたらとても危険な操作をしているかもしれません。もしこの記事を参考にされる方いらっしゃいましたら、自己責任でお願いいたします。#環境
動作環境は以下の通りです。この記事ではxamppのインストールから書いていこうと思います。また、Gmailアカウントについては携帯電話番号登録がされている場合(二重認証)の場合と、携帯番号無しでGmailアカウントを作った2通りの説明を残します。
(Gmailアカウントは持っている前提で話を進めます)* Windows10
* Xampp(Apache + PHP + Mercury Mail Server + Fake Sendmail)
* Gmail#xamppインストール編
まず、以下のURLからxamppインストーラをダウンロードしてください。* https://www.apachefriends.org/
DockerでRedisコンテナを立ち上げLaravelで読み書きする
# はじめに
DockerでRedisコンテナを立ち上げLaravelから読み書きしてみましたので、
Redisコンテナを立ち上げるまでの最小限の構成を紹介します。## やりたいこと
– DockerでRedisコンテナを立ち上げたい
– Redisのデータを永続化したい
– LaravelからRedisのデータを読み書きしたい## この記事で説明しないこと
– Redis以外のDocker構成
– Laravelのインストール手順## ディレクトリ構成
“`
.
├── data
│ └── redis
│ └── appendonly.aof(コンテナ起動時に作成されます)
├── docker-file
│ ├── nginx
│ │ └── default.conf
│ └── php
│ ├── Dockerfile
│ └── php.ini
├── volumes
│ └── www
└── docker-compose.yml
“`
# 各ファイルの内容
## docker-compose.y
PHP7.2 × DockerでgRPCクライアントを使うための環境構築
Goでクライアントを作るときには、`brew`や`go get`でパッケージをいくつか入れるだけで済むのですが、PHPの方ではいくつかハマりどころがあったのでまとめました。
# 前提
* protoコマンドがインストールされている
* 使用するRPC方式はUnaryRPCである
* コード生成はローカル環境で行う# 扱うprotoファイル
下記のprotoに少し変更をかけたものを扱います。
https://grpc.io/docs/languages/php/quickstart/“`hello.proto
package hello;service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}message HelloRequest {
string name = 1;
}message HelloReply {
string message = 1;
}
“`# コード生成
下記ページを参考にしました。
https://grpc.io/docs/languag
【Laravel】シーディング
# 内容
シーディングについてメモしておきます。# factoryファイルの作成
UserFactoryはデフォルトで作成されています。
ここではuser_idを外部キーにもつPostモデルのfactoryファイルを作成してみます。“`zsh
% php artisan make:factory PostFactory –model=Post
“`–modelオプションでモデルを指定しています。
ファイルの中身は、例えば以下のようにします。“`php:database/factories/PostFactory.php
use Illuminate\Support\Str;$factory->define(Post::class, function (Faker $faker) {
return [
‘title’ => $faker->title(),
‘comment’ => Str::random(10),
];
});
“`指定していないcreated_atやupdated_atなどは自動生成
DockerでPHP7.4のLaravel開発環境を作成
PHP7.4のLaravel開発環境を、Docker-Composeで構築して、Laravelの新規プロジェクトを作成して起動してみるところまで確認してみます。
データベースには「MariaDB」を使います。## 環境
この記事を書くにあたって使用した環境です。どれも、2020年7月時点の最新バージョンを使用しているハズ。
### Docker
| Name | Version |
| ————– | ——- |
| docker | 19.03.1 |
| docker-compose | 1.24.1 |### Web
今回は、Webサーバーに「Apache」を使用します。
| Name | Version |
| ——- | ——- |
| PHP | 7.4 |
| Apache | 2.4.38 |
| Laravel | 7.21.0 |### DB
データベースは「MariaDB」です。データベース管理ツールの「Adminer」も入れておきま
GulpのBrowserSyncとPHPのビルトインサーバを組み合わせる
## 要約
コーディングでBrowserSyncを使うときにPHPも使いたいけど、
さくっとビルトインサーバで実行するのに詰まったのでメモ。
要はBrowserSyncのproxyを使うのと、ビルトインサーバを0.0.0.0で実行したらいけた。### ビルトインサーバの起動
localhost:8000でもいいかと思ったけどダメだった。
のでlocalhostじゃなくても参照できるよう起動。“`bash
# 先にビルトインサーバ起動。localhostだとproxyが効かない?(効かなかった)
php -S 0.0.0.0:8000
“`BrowserSyncの方はproxyでビルトインサーバを参照するだけ。
“`gulpfile.js
// これでlocalhost:3000のリクエストはlocalhost:8000を参照する
browserSync: {
proxy: ‘localhost:8000’
}
“`その他、htmlファイルでPHPを実行したいのもあったので、細かく調整。
ApacheでいうところのAddTypeに相当する実行をするために
【Laravel】Composerを使った環境構築
#Composerを使ってLaravelをローカル環境に構築する。
terminalでapplications/mamp/htdocsに移動する。
composerのcreate-projectコマンドを使ってLarabelをインストールする。“`terminal
composer create-project –prefer-dist laravel/laravel 【ディレクトリ名】
“`
※【ディレクトリ名】の部分がフォルダの名前になる。
[Laravelのインストール](https://readouble.com/laravel/7.x/ja/installation.html)
バージョン
—
php:7.3.11
Laravel:7.21.0
【PHP】関数
書籍のアウトプットとして
#構文の表記について“`php5
仮引数
┌戻り値のデータ ┌─┴─────────────┐
void asort ( array $array [, int $sort_flags = SORT_REGULAR])
関数名─┘ └─引数のデータ型─┘ └─デフォルト値
“`
**`[]`(ブラケット)で囲まれた引数は省略可能**データ型
|名前|説明|
|—|—|
|mixed|複数のデータを返す可能性がある(戻り値の場合)、または複数のデータ型を指定できる(引数の場合)|
|void|戻り地がない|#文字列関数
##mb_strlen
文字列の長さを取得する
strlenとの違いはマルチバイトに対応しているかしていないか。##mb_substr
文字列から特定文字列を抽出
引数には負の数も指定できるがこれにメリットは有るのか?##printf
“`php5
int printf
【学習記録(PHP)】関数作りの失敗
こんにちは、いちかわです。・ V ・
ECサイトを制作する過程で、関数の取り扱いが増えてきたので、
忘れないように記録させていただきます。関数は便利で分かりやすくが基本!
関数をつくるとき、修正のしやすさや、流用が効く書き方が重要になってきます。
まずはこちらをご覧ください。関数を覚えたての私が、最初に書いた関数です。
おそろしい見た目をしていますが、このときの私は「ちゃんと動いた!」と、とても満足していました。こちらのプログラムは、\$nameと\$commentの文字数をカウントし、指定文字数をオーバーした場合には、\$err_msgという配列にエラーメッセージをためるという仕様になっています。
“`php:function.php
$err_msg = check_text_length($err_msg, $name, $comment);
“`
“`php:function.php
function check_text_length($err_msg, $name, $comment) {
$name_length = m
【PHP】Phan の “PhanUnreferencedUseNormal Possibly zero references to use statement for classlike/namespace” エラー時注意点
> Phan で静的コード解析すると「`PhanUnreferencedUseNormal Possibly zero references to use statement for classlike/namespace MyClass`」エラーが出る。Symfony の Component 利用時にも出る。
“`text:Phanのエラー
PhanUnreferencedUseNormal Possibly zero references to use statement for classlike/namespace MyClass (\MyVendor\MyPackage\MyNameSpace\MyClass)
“`[「phan PhanUnreferencedUseNormal Possibly zero references to use statement for classlike/namespace」でググって](https://www.google.com/search?q=phan+PhanUnreferencedUseNormal+Possibly+
PHP calコマンドっぽいカレンダーを1行で
とりあえず、直にcalコマンドを実行する方向は無しで頑張ってみました。
~~~php:cal.php
setDate($argv[2] ?? $d->format(‘Y’), $argv[1] ?? $d->format(‘m’), 1)->format(‘F Y’), 20, ‘ ‘, 2). “\nSu Mo Tu We Th Fr Sa\n”. preg_replace(‘/(.{1,21})/’, “$1\n”, str_repeat(‘ ‘, $d->format(‘w’)). sprintf(str_repeat(‘%2d ‘, $l = $d->format(‘t’)), …range(1, $l)));
~~~~~~plain
$ php cal.php
July 2020
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22
PHPのtry ~ catchで、Fatalエラーをcatchしたい場合は、ExceptionでなくThrowableを利用する
# 環境
PHP 7.4.0 CLI`Throwable`は、PHP5系では利用できないとのこと
# 発生した問題
稼働しているアプリのログにたまにFatalエラーが記録されている。
原因を探るため、Fatalエラーが発生した場合に`try~catch`でデバッグ用の処理を実行し、怪しい変数を`var_dump()`してエラーログに吐きたい。
`try~catch`でエラーハンドリングするようにしたが、以前同じFatalエラーが出力され、エラーハンドリングできていないようにみえる。# 解決策
`\Exception`ではなく、`\Throwable`を利用する。
https://stackoverflow.com/questions/12928487/php-try-catch-and-fatal-error
https://www.php.net/manual/en/class.throwable.php# エラーは基本的に握りつぶさず、修正すべき
Exception、Fatalエラーを全部補足できる`\Throwable`は便利だと感じましたが、> Error は
Laravel tinker データベースの接続できるか疎通確認する
“`
$ php artisan tinker
“`## データベースに接続できるか確認する
簡単なのはSELECT文が通るか実行して確認します。」
“`shell-session
>>> DB::select(‘select 1’);
=> [
{#3046
+”1″: 1,
},
]
“`このような結果が返れば、少なくともデータベースに接続できています。
## データベースに接続できない場合
データベース接続設定内容を確認します。
“`shell-session
$ php artisan tinker
>>> config(‘database.default’)
=> “mysql”>>> config(‘database.connections.mysql’)
=> [
“driver” => “mysql”,
“url” => null,
“host” => “db”,
“port” => “3306”,
“database” => “laravel_lo
CakePHP4 のエンティティでテーブルを使う
# 環境
– CentOS 6
– PHP 7.2
– CakePHP 4.1.0# やりたかったこと
エンティティの中でテーブルオブジェクトを扱いたかっただけなんですけどね…。CakePHP3 系で使っていた TableRegistory が非推奨のようで、PhpStorm で打ち消し線を引かれてて (´・ω・`) となったので、ちゃんと推奨されたの使いたいな、と思っただけです。ほぼ自分用メモ。# 結論
Cake\ORM\Locator\LocatorAwareTrait を使うそうです。
ちなみに、Docs には
>Deprecated:
>4.1.0 Use \Cake\ORM\Locator\LocatorAwareTrait::getTableLocator() or \Cake\Datasource\FactoryLocator::get(‘Table’) to get the table locator instance instead.とありました。
どっちでもいいんですな。今回は Cake\ORM\Locator\LocatorAwareTrait