- 1. AAA
- 1.0.1. Laravelでテーブルのcreated_at, updated_atに時刻をミリ秒単位で入れる
- 1.0.2. CakePHP3.8 と Laravel7.x の「書き方」の違い ~ORM周りその2~
- 1.0.3. Visual Studio Code設定メモ
- 1.0.4. PHPのSwitch文の厳密な比較について
- 1.0.5. Laravelで和暦を扱う
- 1.0.6. Laravel5.6以降のログの機能をちょっと調べた
- 1.0.7. Laravel Socialiteを使用してソーシャルログイン を実装する
- 1.0.8. Laravel + Vue.jsの導入方法
- 1.0.9. Dockerコンテナを止めずにapache2を再起動する方法【php7-apache】
- 1.0.10. PHPとは(入門します)
- 1.0.11. 不動点コンビネータを用いた無名再帰関数の実行まとめ
- 1.0.12. 【Laravel】MySQL設定メモ
- 1.0.13. CORS問題の対応の仕方をミスってた話
- 1.0.14. FuelPHPにおいてtimestampで範囲を指定して取得するとき注意点
- 1.0.15. Laravelでデータの作成、削除 save() create() delete()
- 1.0.16. なぜ、ログイン実装後に Register で 「Oops VFS connection does not exist」と表示されるのか
PHPって使いづらい・・・
**愚痴を連ねた記事です。**(あくまで個人の感想です。)
#生産性低くね・・・?
とふと思いました。仕事で半年程度ですが、使った感想を書いていきます。##PHPの特徴
PHPの特徴はWEB関係のフレームワークが多く存在し、WordPressなどもよく用いられます(WordPressはCMSですが・・・)。案件ではCAKE PHPやLaravelを用いて開発をしていましたし、WEB関係の実装はやりやすいとは感じました。動的型付言語であり変数型をあまり考えずに変数を実装できるので、あまり頭を使わずに変数を利用できます。実際、文字列型と数値型をあまり意識せずに値を入れられるのは便利でした。
##ただ生産性がちょっとね・・・
– ロクなIDEが無い
– Eclipse、VSCode、NetBeansと使いましたが、定義ジャンプが無かったり自動インポートが無かったりと不便でした。特にVS使ってて自動インポート無いのは辛い・・・。VSStudioでは使えたのに。– 動的型付けめんどくさ!
– 数値と文字列考えなくて良いとは言ったが、引数型は合わせないといけない
【Unity】UnityWebRequestで画像ファイルを送信してPHPで受け取る最小実装
UnityWebRequestで画像ファイルを送信しPHPで受け取る最小の実装を備忘録として残します。
## Unity側
前提条件として画像ファイルはバイト配列として取得している状態を作ります。
以前執筆したコチラの記事でTextureをPNGにエンコードしたバイト配列作成までを紹介しているので、参考になるかもしれません。
[【Unity】RawImageのTextureをPNGにエンコードする方法](https://qiita.com/ohbashunsuke/items/5d9b9771e33d3027fb9c)“`cs
IEnumerator Send(byte[] bytes)
{
var form = new WWWForm();
// “file”はPHP側で$_FILESから取得するキー ex)$_FILES[“file”]
form.AddBinaryData(“file”, bytes, “image.png”, “image/png”);
var req = UnityWebRequest.Post(“http://lo
【PHP・laravel】クエリパラメータを送る時まとめ(getとrequest)
初歩的なことですが、調べてもなかなか出てこなかったため、記録します。
#HTMLからPHP側に送る“`sample1.laravel.php
送信
“`“`sample2.laravel.php
送信
“`php側
“`index.php
$get1 = $_GET[‘suji’];//1
$get2 = $_GET[‘moji’];//’文字’
“`#PHP内のやり取り(関数から関数)
####数値や文字を送るとき“`index.php
function a(){
redirect(‘/b?suji=1’);
}function b(){
$request1 = $_REQUEST[‘suji’]//1
}
“`“`index.php
function a(){
redirect(“/b?moji=’文字'”);
}function b(){
$request2 = $_R
Laravelのブログ開発でmarkdown対応させてみた
# はじめに
Laravelを使ってブログを開発している際に見出しや装飾を本文に反映させてみたいな
と思い、markdown対応させてみました。
至らない点がありますが暖かい目でみてやってください。### 使用するmarkdown
Markdown Extraを使用します。
また、ライブラリは[cebe\markdown](https://github.com/cebe/markdown)を使用します。### markdown実装
markdownの実装自体は簡単なコードで完了します。“`convertMarkdown.php
$converter = new \cebe\markdown\MarkdownExtra();
$String = $converter->parse(“# AAA”); //AAA
“`
### Laravelプロジェクトに組み込む
convertMarkdown.phpで使用したコードをLaravelプロジェクトに組み込みます。
今回はブログでの使用なのでブログの本文が表示される画面で反映させたいので、
記事一覧画
Laravelでテーブルのcreated_at, updated_atに時刻をミリ秒単位で入れる
##初めに
PHP(laravel)の開発で、
データベースにinsertする際、created_at、updated_atの時刻を、ミリ秒(3桁)まで指定する要件があり、ネットで探しても良記事が見つからなかったのでメモ。###1.getDateFormat()をModelに記載
例として、productsテーブルに商品を登録するという想定。“`Product.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
//~省略~//この関数をモデルに追加
public function getDateFormat()
{
return ‘Y-m-d H:i:s.v’;
}
}“`
###2.現在時刻をミリ秒単位に成型
コントローラにDBの処理を書くことはバットプラクティスかもしれませんが、
今回簡単な例としてコントローラーに下記のように記述。
*Carbonを使用
CakePHP3.8 と Laravel7.x の「書き方」の違い ~ORM周りその2~
# CakePHP3.8 と Laravel7.x の「書き方」の違い ~ORM周りその2~
今回はアクセサー周り
前: [クエリの要約](https://qiita.com/yokocho-comachi/items/30330f24dbdcc0c03720)
# そもそもクエリオブジェクトの返り値が別
## 1件取得
* CakePHP
Table クラスとは別に、Entity クラスがあり、それが返ってくる
“`php
// \App\Model\Entity\Users が返ってくる(Table クラスとは別)
$veteranHyphen = $usersTable->find(‘hyphen’)->find(‘veteran’)->first();
“`* Laravel
Model が Cake で言う Table, Entity の役割を持っている。
なので Model 自身のインスタンスが返ってくる。“`php
// \App\Users が返ってくる
$veteranHyphen = Users::hyphen()->veteran()
Visual Studio Code設定メモ
## Extensions
– PHP
– [PHP Extension Pack](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-pack)
– [PHP Debug](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug)
– [PHP Intelisence](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense)– View側
– [Smarty](https://marketplace.visualstudio.com/items?itemName=imperez.smarty)
– [Sass](https://marketplace.visualstudio.com/items?itemName=robinbentley.sass-indented)
– [SVG
PHPのSwitch文の厳密な比較について
PHPのSwitch文は厳密比較`===`ではなく`==`で比較される
“`php
$param = “2”;switch ($param) {
case 2:
echo “paramはInteger型の2です”;
break;
case “2”:
echo “paramはString型の2です”;
break;
}
“`
これの出力結果は`paramはInteger型の2です`
String型なのにInteger型と判断されてしまう
コレを解決するには“`php
$param = “2”;switch (true) {
case $param === 2:
echo “paramはInteger型の2です”;
break;
case $param === “2”:
echo “paramはString型の2です”;
break;
}
“`こうしてやる必要がある
最初は条件式にtrueを入れるなんて!!!!と思ったけど条件式に “2” をいれるとPHPがその時点で自動的にInt
Laravelで和暦を扱う
和暦を扱う必要があったので,その実装をまとめてみました
# 環境
– Laravel 5.8# 作るもの
– 年号を管理するテーブル(era_names)
– 和暦クラス
– 和暦と西暦の変換処理# 年号テーブルの作成
年号を管理するテーブルには– 年号の名前
– 略称
– 開始日
– 終了日の4つのカラムを作成します.テーブル名を“`era_names“`とし,マイグレーションファイルは次のようになります.
“`php
public function up()
{
Schema::create(‘era_names’, function (Blueprint $table) {
$table->id();
$table->string(‘name’);
$table->string(‘short_name’);
$table->date(‘start_at’);
$table->date(‘end_at’);
$table->timestamps();
Laravel5.6以降のログの機能をちょっと調べた
# 目的
– Laravelのログに関する情報を調べてみたので簡単にまとめる
# 実施環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| 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.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaa
Laravel Socialiteを使用してソーシャルログイン を実装する
Laravel Socialiteを使用してソーシャルログインでの登録・ログイン機能を実装していきます。
# Googleの設定
[GoogleAPIs](https://console.developers.google.com/cloud-resource-manager?pli=1)
上記にアクセスして、『プロジェクトを作成』を選択する### 新しいプロジェクト
プロジェクト名: 適宜
場所: 組織なし
を入力して『作成』を押下### Google Cloud Platform
利用規約をチェックし『同意して続行』を押下### 左上ハンバーガーメニュー/『APIとサービス』/『OAUTH同意画面』を選択する
### OAuth同意画面
UserType: 外部を(適宜)選択し『作成』を押下アプリケーション名: 適宜
『保存』を押下### サイドメニュー/『認証情報認証情報を作成』/『OAuthクライアントID』を選択する
### OAuthクライアントIDの作成
アプリケーションの種類: 『ウェブアプリケーション』をチェック
名前:適宜
承認済みのリダイ
Laravel + Vue.jsの導入方法
LaravelのBladeにVueコンポーネントを組み込む方法をまとめます。
## 環境
+ laradock
+ php: 7.3
+ Laravel: 7.2## Vue.jsをインストールする
“`php:laravel/package.json
“vue”: “^2.6.11”,
“vue-template-compiler”: “^2.6.11”
“`“`
$ docker-compose exec workspace npm install
“`## Vueコンポーネントを作成する
試しにハートボタンを作成します。“`laravel/resources/js/components/SampleLike.vue
10
Dockerコンテナを止めずにapache2を再起動する方法【php7-apache】
## 結論
下記コマンドでreloadさせれば、変更を有効化できます。
“`
$ /etc/init.d/Apache2 reload
“`## 環境
“`
Docker for Windows 19.03.8
DockerImage php:7.4-apache
“`## 背景
Dockerでローカル環境構築中に困りました。
普段CentOSで開発していると、設定ファイル変更後に有効化させる際、下記のコマンドをたたきたくなるところですが、
この場合コンテナごと停止してしまいます。“`
systemctl apache2[httpd] restart
“`コンテナを止めずに設定変更の有効化をするには下記のコマンドをたたきましょう。
“`
$ /etc/init.d/Apache2 reload
“`
PHPとは(入門します)
PHP(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)を勉強しようと思います。
なぜ、この言語なのか。なぜやろうと思ったか。興味を持ったか。
まずそれを自分の中でアウトプットする意味で、この記事に書いて、勉強を進めて行こうと思います。スクールでHTMLとCSS(Haml、SCSS)、JavaScript,Ruby,Railsなどを学びました。それらを利用して、簡単なアプリ開発を行いました。結果、僕が一番興味を持ったのは、フロントエンド側の実装工程です。
PHPでは、HTMLやJavaScriptなどでは叶えることない動きを叶えることができます。
まずは、環境構築をしてから、progateなどを用いていく予定です。
不動点コンビネータを用いた無名再帰関数の実行まとめ
諸般の理由で『[Pythonのlambda式を用いたラムダ計算の基礎表現](https://qiita.com/ytaki0801/items/fb4edeba41ff1bfb4b52)』を書いた後にHaskellに触れたところ,無名再帰関数を実行する不動点コンビネータ`fix`がとんでもなく簡単に書けたため,同じ方法で他のプログラミング言語でもできないか試したところ,これまたあっさりできたので,まとめメモ的に新しく記事にした.
このような内容がQiitaや書籍,ネット上に星の数の更に星の数乗ほどあることは承知しているが,この手の話はYコンビネータが大きな割合を占めており(実際,元記事でも取り上げている),関心のある人々の数多ある参考資料のひとつ程度に捉えてもらえると幸いである.ツッコミ,編集リクエスト歓迎.
#不動点コンビネータの定義
Haskell,Scheme,Python,Ruby,JavaScript,Scala,Perlでの実行例を述べる.なお,不動点コンビネータとは,$f(g(f))=g(f)$が成り立つ関数$g$を指す.この記事では,Haskellの呼称である`f
【Laravel】MySQL設定メモ
# MySQLにデータベースを作成する
“`terminal:ターミナル
$ mysql -u rootmysql > CREATE DATABASE アプリケーション名;
“`# laravelファイルの.envを修正する
“`php:.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=[アプリケーション名]
DB_USERNAME=root
DB_PASSWORD=
“`
CORS問題の対応の仕方をミスってた話
フロントエンドとサーバサイドプログラムの連携をRestっぽい感じでやるようになって久しいが
ここに来て結構なポカミスをやったので備忘録として。フロントには固定値のjsonを返すだけのダミーAPIを作って実装を進めてもらい
バックエンドはprod用としてそのダミーが動的なものになるように実装、最終的にダミーと差し替え
みたいな流れで制作をしている。で、バックエンドはphpを使うが色々ごちゃごちゃやった後に
“`php:test.php
色々やる〜
header(‘Content-Type: application/json’);
echo $json;
exit;
“`としてjsonを出力するのがセオリーである。
フロントはtest.phpをエンドポイントとしてjsとかで実行するわけだが
大体いつも問題になるのがCORSである。セキュリティリスクを追々考えなければと思いつつApache側で
“`apache
Header set Access-Control-Allow-Origin *
“`レスポンスヘッダに全てのドメインからアクセスOK!!を付けている
FuelPHPにおいてtimestampで範囲を指定して取得するとき注意点
#概要
`created_at` や `updated_at` などに使われる `timestamp` 型は非常に便利で、不等号で簡単に比較ができるのですが、気を付けないとうまく動いてくれません。すごく基本的なことですが、場合によっては適当に書いても正常に動いてしまうことがあるので意外と気づきにくい部分だと思います。#本題
デフォルトの `unixtime` で扱っている場合
e.g.)`1596447140` など
はそのまま使えて、“`unixtime.php
$query = \DB::select()
->from(‘table_name’)
->where(‘created_at’, ‘>’, strtotime(‘-1 week’))
->execute();
“`のように書くだけで比較ができます。この場合は1週間前よりあとに作られたレコードだけ取得します。
一方、違うフォーマットで扱っている場合
e.g.)`2020-08-03 18:32:20` など
は注意が必要で、フォーマットも合わせてあげる必要があります。例の場合は、“`anyformat
Laravelでデータの作成、削除 save() create() delete()
####save:テーブルを保存
“`php3
$user = new App\User //モデルUserクラスのオブジェクト$userを作成
$user->name = “toto” //$user->nameプロパティに “toto”を代入
$user->save() //saveでDB内Userテーブルに新規保存できる。
“`####create:テーブル作成
マスアサイメント対策(次項目でで説明)
をmodelに記入する
app/User.php“`php3
protected $fillable = [“name”,”body”];
“`
と記入し、リクエストから変更できるカラムをname,bodyのみに制限する。“`php3
//DB内にUserを直接作成
App\User::create([“name”=>”piyo”, “address”=>”tokyo”]);
“`
マスアサイメントを忘れていると、MassAssignmentExceptionエラーが起こる。####マスアサイメント
なぜ、ログイン実装後に Register で 「Oops VFS connection does not exist」と表示されるのか
#なぜ、ログイン実装後に Register で 「Oops VFS connection does not exist」と表示されるのか
このエラーの背景としては、
私は、Laravel で Auth 機能を用いてログイン機能を実装するところでした。
問題なく 「web.php 」と「Routing」と「Controller」はしっかり書けていました。しかし、
https://gyazo.com/bdf3f4c82bc15c334adb050a5723b634
このように表示される模様。エラー内容は
「Oops VFS connection does not exist」
ふむ。
直訳すると「おっとっと VFS接続が存在しません」
おっとっとじゃないわw 泣きたいわw
多分、接続サーバー先の問題とかそう言った類の問題な気がすると思いました。
なぜなら、その証拠に、ログインしないで実際に他の階層に降りようとすると、
Auth の設定で Login の画面に強制転送さられるからです。この事件に陥る人が他にもいるのではと思い、
ネットで探していたところ、似たような