PHP関連のことを調べてみた2019年11月22日

PHP関連のことを調べてみた2019年11月22日
目次

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巻までを買い占めて編集部に再開のプレッシャーを掛けるんだ。

Laravelで名前を指定してファイルをダウンロードできるようにする

# 概要
Laravelを使って、ファイル名を指定してダウンロードを促すレスポンスを返します。

# Content-Disposition
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Disposition

HTTPレスポンスのレスポンスヘッダーに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
end

def enemy
janken = [0,1,2]
enemy_hand = janken.sample
end

def pon player_hand,enemy_hand
puts “あなたの手#{player_hand}”
puts “相手の手#{enemy_hand}”

if player_hand === enemy_hand
puts “アイコです、もう1回”

元記事を表示

OTHERカテゴリの最新記事