- 1. herokuCLIを通したherokuの開始(入門者用)
- 2. 夜中にPHP書いていたら思いついた役に立つか分からないもの
- 3. MACでPHPからMailHogにメールを投げてみる設定
- 4. 【PHP】学習メモ / 多次元配列
- 5. PHPのoci_bind_by_name()で日付型項目が更新できない
- 6. 簡単 STEPごとに作る自作MVC WebFramework PART2
- 7. GitHubにPushしたらGoogle Cloud BuildでCIが動いてSlack通知するやつ
- 8. LaravelにSassを3分で導入する
- 9. Laravelでtextareaのmaxlengthと、ValidationRuleのmaxが改行によって判定ずれする
- 10. GAEのPHP7環境でFireStoreに繋ごうとしたら “PHP Fatal error: ~~ requires the gRPC extension.” って怒られた時のTips
- 11. Apache で Basic 認証の値が PHP などに渡っていない時の対処法
- 12. [PHP] 正規表現で SQL のキーワードだけを一発で大文字/小文字変換する
- 13. 2020年ソフトウェア開発の7つのトレンド
- 14. 放課後アトリエといろ 第65535話が公開された
- 15. 【PHP】SQL文を構文解析してJSONに変換する
- 16. Laravelで名前を指定してファイルをダウンロードできるようにする
- 17. PHPの$_POSTが受け取れない
- 18. PHPの グローバル空間 =名前空間の定義がない場合、すべてのクラスや関数の定義はグローバル空間に配置されます
- 19. 指定した文字列(拡張子)から後の文字列を削除するPython版(PHPからPython)
- 20. RubyとPHPで簡単なアプリケーションを作ってみる。
herokuCLIを通したherokuの開始(入門者用)
# Herokuとは?
`Herokuは はアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理の問題からも解放されます。`–[公式フォムページ](https://jp.heroku.com/home)から抜粋補足するとHerokuはPaaS(Platform as a Service)として開発者はアプリケーション開発のみ集中すれば、アプリケーションの配布と運用が出来るということです。[GitHub](https://github.com)と連動されているのでgitにpushだけでデプロイが可能なのでCI/CDに適切なプラットフォームです。現在`Node.js`,`Java`,`PHP`,`Go`などの言語を対応しています。
# Heroku-CLIのダウンロード
Heroku-CLIはターミナル上でHerokuアプリをよりやすく扱えるツールです。
[こちら](https://devcenter.heroku.com/articles/heroku-
夜中にPHP書いていたら思いついた役に立つか分からないもの
あかさたな
MACでPHPからMailHogにメールを投げてみる設定
ローカル環境で手軽にメールテストをしたい時、windowsだと「smtp4dev」を使っていたけでれど、MACやLinuxでないかなと探したら、MailHogがあった。
mailcatcherだとruby入れないとだけれど、MailHogはバイナリファイルなので便利。# MailHogインストール
`brew update && brew install mailhog`
実行
`mailhog`# sendmailの設定
設定ファイルを編集
`sudo vim /etc/postfix/main.cf`以下の行を追加
“`cf:main.cf
relayhost = [0.0.0.0]:1025
“`チェック
`sudo postfix check`# phpでテスト
以下のテスト用ファイルを作成“`php:mailtest.php
【PHP】学習メモ / 多次元配列
#多次元配列
多次元配列は、二次元配列とも呼ばれ配列の中に配列が入れ子になっている形式。###例1
“`php
$menu = array(
array(‘coffee’, 300),
array(‘juice’, 200),
array(‘cake’, 400)
);echo $menu[0][0].’:’.echo $menu[0][1].’円’;
echo $menu[1][0].’:’.echo $menu[1][1].’円’;
echo $menu[2][0].’:’.echo $menu[2][1].’円’;
“`
結果“`
coffee : 300円
juice : 200円
cake : 400円
“`
配列の中身“`php
$menu[0] //array(‘coffee’, 300)
“`
1つ目の[ ]は、配列のいくつめかを指す(インデックス0は1つ目)“`php
$menu[0][0] //coffee
$menu[0][1] //300
“`
2つ目の[ ]は、その配列のいくつ目の値かを指す。###その他い
PHPのoci_bind_by_name()で日付型項目が更新できない
# こんなエラーがでた
`Warning: oci_execute() [function.oci-execute]: ORA-01861: リテラルが書式文字列と一致しません in ~~~`
`INSERT`でも`UPDATE`でも全く同じ。その時のコードは以下(抜粋)
“`php5:PHP
oci_bind_by_name($stid, “:DATE_COLUM”, $value, -1, SQLT_CHR);
“`“`sql:SQL
INSERT INTO SCHEMA.TABLE(
DATE_COLUM
)
VALUES(
:DATE_COLUM
)
“`# [PHP.net – oci_bind_by_name](https://www.php.net/manual/ja/function.oci-bind-by-name.php)を、穴が空くほど見たが
日付型項目のtypeの指定はどうするかがわからず。おそらく`SQLT_CHR`なんだが
“`sql:SQL
VALUES(
TO_DATE(:DATE_COLUM)
)
“`
↑コ
簡単 STEPごとに作る自作MVC WebFramework PART2
# 自作 Php MVC Web Framework PART2
[PART1はこちら](https://qiita.com/sakunowman/items/b8f206661ab11af68d38)
完成したレポジトリのリンクを張っておきます。
developブランチで確認してください。
[レポジトリ](https://github.com/Saknowman/study_php_web_framework)前回までのSTEPは
– [STEP0: 環境構築](https://qiita.com/sakunowman/items/b8f206661ab11af68d38#step0-%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89)
– [STEP1: 全体像](https://qiita.com/sakunowman/items/b8f206661ab11af68d38#step1-%E5%85%A8%E4%BD%93%E5%83%8F)
– [STEP2: プロジェクト](https://qiita.com/sakunowman/items/b
GitHubにPushしたらGoogle Cloud BuildでCIが動いてSlack通知するやつ
## はじめに
[Google Cloud Build](https://cloud.google.com/cloud-build/?hl=ja)
Cloud BuildでPHPのアプリケーションでphpunit動かしてslackに通知するやつをやります
## 参考
GCP公式ドキュメント
* [GitHub でのビルドの実行](https://cloud.google.com/cloud-build/docs/run-builds-on-github?hl=ja)
* [サードパーティ サービスの通知の構成](https://cloud.google.com/cloud-build/docs/configure-third-party-notifications?hl=ja)## 準備
* Googleアカウント(要GCP無料トライアル)
* [Cloud SDK](https://cloud.google.com/sdk/docs/quickstarts?hl=ja) をインストールして `gcloud` コマンドが利用できるように
* 対象とするPHPアプリケーシ
LaravelにSassを3分で導入する
わい「css直打ちとかレガシーやし死んでも直接打ちたくないんじゃ」
わい「いつもみたいにSassでぐるぐる回したくないんか?はよ導入じゃい!」(山形弁)
なるほどたしかに。初心者なので、一番簡単な方法でお願いします。
##Composerの設定ファイルにSassを追加する
まず、Laravelのcomposer.jsonファイルですよね。
わい「composer.jsonとは、依存するパッケージを定義するためのファイルじゃ」
![スクリーンショット 2019-11-21 15.28.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472701/88ff5b3d-19fc-5e00-31f6-93e533ce7dfa.png)
こんな記述がありますね。
“`
“require-dev”: {
“filp/whoops”: “~2.0”,
“fzaninotto/faker”: “~1.4”,
“mockery/mockery”: “~1.0”
Laravelでtextareaのmaxlengthと、ValidationRuleのmaxが改行によって判定ずれする
# 何が起こったか
例えば maxlength=10のtextareaがあったとして、このような入力をする。“`
1[改行]
2[改行]
3[改行]
4[改行]
5[改行]
“`“`html:form.html
(省略)
(省略)
“`
FormRequestを継承したRequestFileでこういうRuleを指定したとすると、弾かれてしまう。“`php:XxxRequest.php
GAEのPHP7環境でFireStoreに繋ごうとしたら “PHP Fatal error: ~~ requires the gRPC extension.” って怒られた時のTips
## 結論
* GAEのPHP環境でgRPC拡張を利用するには、php.iniにモジュールを有効化する記載が必要
* php.ini に以下を追加し、ディレクトリトップに置いて、デプロイする必要がある“`INI
extension=grpc.so
“`## 解決までの流れ
### 発生
FireStoreにデータ保存するPHPアプリを作成して、ローカルで動作確認後
GAEにデプロイしたら以下のようなエラーが…“`
PHP message: PHP Fatal error: Uncaught Google\Cloud\Core\Exception\GoogleException: The requested client requires the gRPC extension. Please see https://cloud.google.com/php/grpc for installation instructions. in /srv/vendor/google/cloud/Core/src/ClientTrait.php:75 Stack trac
Apache で Basic 認証の値が PHP などに渡っていない時の対処法
PHP 側で BASIC 認証を処理する時は、サーバーからPHPに BASIC 認証の値を渡して上げる必要があるけれど、Apache の config で下記を設定しないと引き渡されないというのにハマる。
## 設定方法
以下を httpd.conf に。許可している場合は .htaccess にても設定可能。
“`
SetEnvIf Authorization “(.*)” HTTP_AUTHORIZATION=$1
“`## テスト方法
Basic 認証で入力された ID や PW が表示されます。
“`
- PHP_AUTH_USER
- PHP_AUTH_PW
“`
うまく渡っていない時は、Null が返されてしまいます。
Apache をしばらく使
[PHP] 正規表現で SQL のキーワードだけを一発で大文字/小文字変換する
# 背景
`mysqldump` とかで吐き出したやつの大文字小文字を統一したいけど,いい感じのフォーマッタが見つからなかったので正規表現で雑に捌いてみた。制約として,カラム名やテーブル名などはすべてクオート記号で括られている必要があります。
かっこいい正規表現が書きたかっただけです(本音)# 実装
## 関数定義
“`php
function lowerCaseKeywords(string $sql): string
{
static $regex = <<<'EOD' / ((`)|(")|(')) (?# クオーテーション開始) (?: (?:\1\1)++ (?# 連続で並べるクオーテーションのエスケープ) | (?:\\\1)++ (?#
2020年ソフトウェア開発の7つのトレンド
以下はTiara Brown Neilさん ( [hackernoon](https://hackernoon.com/@theneil248) )による記事、[7 Software Development Trends 2020 Revealed](https://hackernoon.com/software-development-trends-2020-revealed-spi305m)の日本語訳です。
# 7 Software Development Trends 2020 Revealed
![表紙](https://hackernoon.com/drafts/6i17k30ki.png)
知ってますか? ITプロジェクトの半分以上が失敗しています。
ソフトウェア開発業界の複雑さと動的な性質を認識している私たちの多くにとっては、それほど衝撃的な事実ではありません。絶え間ない革新と進歩が伴うこの予測不可能な業界で生き残るためには、そのペースに合わせることが必須です。
賢い者は、ソフトウェア開発のサービスを利用するだけでなく、すべてのテクノロジーの長所と短所を比較し検
放課後アトリエといろ 第65535話が公開された
# 放課後アトリエといろ
時の為政者によって封印されてしまった幻の名作、放課後アトリエといろ[第65535話が特別公開されました](https://twitter.com/hanabana_h04/status/1196403961567166466)。
さあさっそく読むんだ。
そして本屋で単行本の1巻から4巻までを買い占めて編集部に再開のプレッシャーを掛けるんだ。今から約10年前、私まだ高校生の時に漫画家デビューした作品『放課後アトリエといろ』は雑誌改変の都合などで打ち切りになったのですが
今回skeb経由で画像の様なリクエストをいただきまして特別読み切りとして復活致しました。(続く→) pic.twitter.com/was8bZb49W— 華々つぼみ@ちびちゅき!⑥巻 発売中 (@hanabana_h04) 【PHP】SQL文を構文解析してJSONに変換する
クエリービルダーのような機能を作るために、生のSQL文を解析して連想配列にできないか調べたところ、PHPでそのものズバリなライブラリがありました。
[PHP-SQL-Parser](https://github.com/greenlion/PHP-SQL-Parser)
—
# インストール
“`
composer require greenlion/php-sql-parser
php -S localhost:8888 index.php
“`# 検証
“`php:index.php
Laravelで名前を指定してファイルをダウンロードできるようにする
# 概要
Laravelを使って、ファイル名を指定してダウンロードを促すレスポンスを返します。# Content-Disposition
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-DispositionHTTPレスポンスのレスポンスヘッダーにContent-Dispositionを指定することによって、それがダウンロードすべきファイルである、名前は〇〇である、ということをブラウザに教えてあげることができます。
これをLaravelで実装します。
# 実装
“`php:DocumentController.php
PHPの$_POSTが受け取れない
ProgateのPHPコースを一通りやったので、手始めにページ間で値の受け渡しをやってみようと思い、以下のコードを書きました。
“`sender.php
“`“`receiver.php
“``sender.php`のテキストボックスに入力された値を、`receiver.p
PHPの グローバル空間 =名前空間の定義がない場合、すべてのクラスや関数の定義はグローバル空間に配置されます
`名前空間の定義がない場合、すべてのクラスや関数の定義はグローバル空間に配置されます。 これは、名前空間に対応する前の PHP がサポートしていた空間です。 名前の先頭に \ をつけると、 名前空間の内部からであってもグローバル空間の名前を指定することができます。
`“`php
“`#名前空間内のクラス、関数あるいは定数へのアクセス
“`php
指定した文字列(拡張子)から後の文字列を削除するPython版(PHPからPython)
#はじめに
PHPで記述したサーバのプログラムをPythonで作ったらどうなるか、気になる部分から開始しようと前の日に書いた機能のPython版をと調べだしたら、あまりも簡単でしたがメモを残します。少しでもPythonを書いている方には簡単過ぎる話かもしれませんが、PHPをPythonに移行する場合はこの程度から開始した方が気持ちが楽になります。
######まず、WEBのリンクを特定の文字列で分割“` 01.py
string = “http://www.sharp.co.jp/support/refrigerator/doc/sjd23d_mn.pdf?productId=SJ-D23D&_ga=2.1612.1531209133-1752366186.1522914385”
# 文字列の位置を検索
s = string.find(‘.pdf’)
print (s)
# 57 が返って来ます
# ここで少し実験。
s = string.find(‘doc’)
# 44 が返って来ます。
s = string.find(‘.doc’)
# -1 が返って来ます。特殊文字を識別し
RubyとPHPで簡単なアプリケーションを作ってみる。
##概要
巷では
RubyとPHPどちらを勉強した方がいいですか?
といった質問やRubyとPHP徹底比較!
といった記事が散見されます。初学者の方でも書けるじゃんけんアプリをRubyとPHPで作成しました。
##Ruby
“`janken.rb
class Play
def player
puts ‘数字を入力してください’
puts ‘0:グー’
puts ‘1:チョキ’
puts ‘2:パー’
player_hand = gets.to_i
enddef enemy
janken = [0,1,2]
enemy_hand = janken.sample
enddef pon player_hand,enemy_hand
puts “あなたの手#{player_hand}”
puts “相手の手#{enemy_hand}”if player_hand === enemy_hand
puts “アイコです、もう1回”