PHP関連のことを調べてみた2020年09月10日

PHP関連のことを調べてみた2020年09月10日

Laravelでneo4jを使ってみる①設定編

#①設定
・laravel バージョン 5.6
・neoEloquent バージョン 1.4.6

##1)Laravelプロジェクトをバージョン指定して作成

“`
composer create-project “laravel/laravel=5.6.*” [プロジェクト名]
“`

##2)Vinelab/NeoEloquentの設定

“`
composer require vinelab/neoeloquent 1.4.6
“`
※neo4jの設定がないと怒られる場合、先にconfig/database.phpの設定をしてキャッシュクリア。
 

##3)neo4jデータベースの利用設定

config/database.phpにneo4jの設定を追加

“`
‘default’ => env(‘DB_CONNECTION’, ‘neo4j’),
“`

“`
‘connections’ => [

‘neo4j’ => [
‘driver’ => ‘neo4j’,

元記事を表示

Amazon Linux 2 で PHP を簡単にアップデートする方法

Amazon Linux 2 の、ここ1年位の Amazon Linux Extra を使って、PHP をインストールしている人は、Amazon Linux Extra でパッケージの Disable & Enable をするだけで、結構簡単に PHP のアップデートができるという話です。

参考: [Amazon linux 2でのphpの更新方法](https://qiita.com/P__act2_tech/items/69a5b94ead8ee3edbc7e) (感謝!)

# 自分の環境

– AWS
– 開発用のサーバー
– Amazon Linux 2
– PHP 7.1 の Extra を導入
– 導入済みの PHP 一覧 `libmcrypt php php-bcmath php-cli php-common php-dba php-embedded php-enchant php-fpm php-gd php-gmp php-intl php-json php-ldap php-mbstring php-mysqlnd php-odbc php-opcache

元記事を表示

PHP 配列の中の配列の値を書き換える方法

# 目的

– 配列の中に入った配列の中の値を更新する方法をまとめる

# 実施環境

– 下記サイトにてPHPの動作を確認しながら本記事を書いた。
– [https://paiza.io/ja](https://paiza.io/ja)

# 例

– 配列の中に入った配列の値を更新する処理を下記に記載する。

“`php
foreach (配列A as &変数){
変数[‘インデックス’] = ‘更新したい値’;
}
“`

# 連想配列の既存インデックスのデータを書き換える具体例

– 配列「$infos」には連想配列が格納されている物とする。
– 連想配列にはインデックス「id」に商品IDが、インデックス「item_name」に商品名が、インデックス「price」に商品の税抜きの値段が格納されている物とする。
– 配列「$infos」に格納されている連想配列のインデックス「price」の税抜き金額を引き出し、税率を用いた計算をし、連想配列のインデックス「price」の税抜き金額を税込み金額で書き換える方法を下記に記載す

元記事を表示

Laravelで更新項目をkey-valueで取得して動的にValidationを実施して更新を実施する

## TL; DR
APIの開発をしていると、通常はFormRequestで更新項目を取得し、validationを実施します。

しかし、更新する項目のみをリクエストとして送信する、かつ1項目のみとする場合は、通常の実装ではこの限りとはなりません。

そのため、少しとトリッキー~~冗長~~なやり方で実装してみます。

## 環境
– PHP7.4
– Laravel7.2

## 通常の更新処理の実装
通常、以下の要領で更新処理のリクエストを送信します。

“`json
{
“name”: “名前”,
“mail”: “test@exmaple.com”,
“gender”: 1
}
“`

このリクエストに対応するFormRequestは、以下のとおりです。

“`php

元記事を表示

【Laravel】バッチでユーザーにメール送信

継続は力なり。めげずに今日も備忘録。
バッチの理解を深める為、簡単な処理を実装してみた。

## 環境
PHP 7.3.8
Laravel 6.18.35

## 本日のお題
バッチでメールを送ってみる。
今回は実装するアプリケーションの登録ユーザーに一括送信するもの。

## メールの環境設定
[mailtrap.io](https://mailtrap.io/inboxes)というSMTPのダミーサーバーを利用する。
mailtrap.ioを利用する事で送信したメールは指定したアドレス宛てには送信されずに、mailtrap.ioの画面で結果を確認する事が出来るので、非常に便利です。会員登録したら直ぐに使えます。

mailtrap.ioの` Inboxes` から` Demo inbox` に遷移して、SMTP情報を確認します。
その情報を元に.envを編集します。

“`php:.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=mailtrap.ioのSMTP情報を参照
MA

元記事を表示

実務で出てきて少し混乱したPHPの文法

#はじめに
2020年の8月から都内の企業でWebエンジニアとして働いています。

開発環境はいわゆるフルスクラッチPHPなのですが、
私はRubyをメインで学習するプログラミングスクール出身でしたので、入社前はほとんどPHPに触ったことがありませんでした。

入社から1ヶ月ほど経った今では基礎文法も大体理解し、新しく出会った関数などをその都度調べながら
既存システムの改修業務を行っています。

そんな業務中、特に違和感のある記述を見かけたので
すぐに忘れないよう、Qiita上に残しておこうと思います。

#問題のコード
“`php
isset($_REQUEST[‘search’]) && $var = $_REQUEST[‘search’];
“`
なんの変哲もないコードですが、人目見たときに混乱しました。

今までisset()を使う際は

“`php
if(isset($_REQUEST[‘search’])){
$var = $_REQUEST[‘search’];
}
“`
↑のようなパターンを見慣れていたので
論理演算子 && はANDの条件

元記事を表示

デザインパターンのお勉強

#デザインパターンのお勉強をしたい

このサイトの例を参考にしてちょっとづつデザインパターンを勉強しながらオブジェクト指向の設計を覚えていきたいと思います。
https://www.techscore.com/tech/DesignPattern/index.html/

まだまだ始めたばかりなので、解釈のおかしなところあると思うのでコメントいただけますと助かります。
また普段PHPを使用しているのですが、こんなところでよく使うよというようなアドバイスありましたらいただけますと大変助かります。

#コマンドパターン
下記引用
>22.1 Commandパターンとは
第22章ではCommandパターンを学びます。あるオブジェクトに対して要求を送るということは、そのオブジェクトのメソッドを呼び出すことと同じです。 そして、メソッドにどのような引数を渡すか、ということによって要求の内容は表現されます。さまざまな要求を送ろうとすると、引数の数や種類を増やさなければなりませんが、 それには限界があります。そこで要求自体をオブジェクトにしてしまい、そのオブジェクトを引数に渡すようにします。それがC

元記事を表示

Laravelのバリデーションでエラー時の遷移先を制御する

## 問題
– `Laravel`のバリデーションでエラーになった際、入力時のページに戻らない
– `Laravel`のバリデーションでエラーになった際に入力時のページへ戻る際、値は保持されない

## 原因
**`Laravel`でバリデーションを適用した際、エラー発生時に入寮時の画面などに戻る際、`GET`メソッドで遷移されるから**

自分は`Request`の`validate`メソッドを利用し、バリデーションを適用していたため、ルールやエラーメッセージなどの設定はできても、その後の制御ができておらず、冒頭のような問題が発生していた。
[バリデーション 5.5 Laravel](https://readouble.com/laravel/5.5/ja/validation.html)を見ると、`Request`以外にもバリデーションを設定できる方法があったので、それを試してみたら問題が解決したので、その方法を記載する。

## 解決策

**`validator`を利用する**

### validator

`validator`はコントローラに直接記入して利用する。
基本と

元記事を表示

[PHP]郵便番号を正規表現でチェックする

今回は下記のコードを使って見ていきます。

“`php
$zip = ‘123−4567’; //←全角

$zip = mb_convert_kana($zip, ‘a’, ‘UTF-8’);
if (preg_match(“/\A\d{3}[-]\d{4}\z/”, $zip)) {
print(‘郵便番号:〒’ . $zip);
} else {
print(‘※郵便番号を 123-4567の形式でご記入ください’);
}
“`

↓のように表示されます。

“`
郵便番号:〒123-4567 //←半角になっている
“`

※**mb_convert_kana**については → [こちら](https://qiita.com/maca12vel/items/9378ec4ae64242ac487e)

#####パラメーターで「**’a’**」を指定する理由
郵便番号は数字なので「**’n’**」では?と思うかもしれませんが、
**-(ハイフン)**が含まれているので英数字扱いとなります。
「**’a’**」と指定することで、英数字を半角に直すことができます

元記事を表示

Phalcon Devtoolsのインストール(mac)

前回、vagrantでPhalcon開発環境を作ったが、Phalcon Devtoolsの使用も必要となり、
ドキュメントと多少違うところがあり、エラー解決の過程をメモとしておく。

“`
composer global require phalcon/devtools
“`
で、次にエラーが出てきた:

“`
Problem 1
– phalcon/devtools v4.0.3 requires ext-phalcon ^4.0.0 -> the requested PHP extension phalcon is missing from your system.
– phalcon/devtools v4.0.2 requires ext-phalcon ^4.0.0 -> the requested PHP extension phalcon is missing from your system.
– phalcon/devtools v4.0.1 requires ext-phalcon ^4.0.0 -> the requested PH

元記事を表示

[PHP]半角数字に直して、数字かどうかをチェックする

今回使うファンクションは“mb_convert_kana“

例えば、以下のように記述されていたとする

“`php
$age = 20; //←半角数字

if (is_numeric($age)) {
print($age . ‘歳’);
} else {
print(‘※年齢が数字ではありません’);
}
“`

表示は下記の通り

“`
20歳
“`

“is_numeric“というファンクションで、
指定されたパラメータが数値かどうかをチェックすることができる。
上記の例では($age)をチェックしている。

もし、“$age = ‘あいうえお’“とすると

“`
※年齢が数字ではありません
“`
と表示される事になる。

また、“$age = ’20’“ではなく“$age = ‘20’“(全角数字)にした場合も、
同じように「※年齢が数字ではありません」と表示されてしまう。

ユーザーが上記のように、半角で入力しなければいけない場合でも、
誤って全角で入力してしまうことが多々ある。

なので、仮に全角数字を入力してしまっても、半

元記事を表示

Eccubeで○○円以上送料無料にする処理

`app/Customize/Service/PurchaseFlow/Processor/CustomDeliveryFeePreprocessor.php` というファイルを下記のように作成します。

“`php:CustomDeliveryFeePreprocessor.php

元記事を表示

[PHP]連想配列とforeach構文

##連想配列について

例えば以下の配列があるとする

“`php
$fruits = [‘リンゴ’, ‘レモン’, ‘バナナ’];
“`

この変数“$fruits“に格納されている配列において、
“リンゴ“を取り出したい時は以下のように記述する

“`php
print($fruits[0]);
“`

これで取り出せたが、それぞれの値に対応する添字を覚えておかないと意味がない。
そんな時に使うのが“連想配列“
順番が関係ないような配列の場合によく使う。

上記の配列を連想配列のカタチにすると以下のようになる。

“`php
$fruits = [
‘apple’ => ‘リンゴ’,
‘lemon’ => ‘レモン’,
‘banana’ => ‘バナナ’
];
“`

この時、=>の左側の部分(“’apple’“)を“キー“、右側(“’リンゴ’“)を“値(バリュー)“と呼ぶ。
※キーはなんでも良いが、見た時に誰でも理解できるようなものが良い

連想配列において、先ほどと同じように“リンゴ“を取り出したい時は以下のように記述する

元記事を表示

vagrant+ContOS7+php7.2+nginx+phalcon4 環境構築と問題記録

vagrant+ContOS7+php7.2+nginx+phalcon4 環境構築と問題記録

参考資料:
https://qiita.com/wjtnk/items/f2d72fb3790d008a3154

ツールのインストール:
https://www.virtualbox.org/
https://www.vagrantup.com/

###1.仮想環境の立ち上げ

“`
$ mkdir phalcon
$ cd phalcon
$ mkdir sync
$ vagrant init CentOS7
“`

phalcon/Vagrantfileを編集する

“`
Vagrant.configure(“2”) do |config|
config.vm.box = “centos/7”
#ローカルでアクセスするときのIPアドレス。
config.vm.network “private_network”, ip: “192.168.10.10”
#同期先を指定。「カレントディレクトリ(.)を/vagrant以下に同期」と、「syncディレクトリを/var

元記事を表示

【PHP】コメントを書くとき、書かないとき

##コメントはどうあるべきか?

コメントは、読んですぐに理解できるような、簡潔で、正確なものであるべき。
それはわかるのですが、すべての処理に書いていたら
ソース全体が読みにくくなってしまいます。

コメントも整理が必要だ。

##いらないコメントと必要なコメント

見ればわかるようなことはコメントに書かない方がいい。

“`php
// 人間かどうかを判断
if ($object->isHuman() === true) {
// 名前をタロウにする
$name = ‘tarou’;
}
“`
メソッド名や変数名などの助けもあって、明らかに処理の内容がわかるとき、
わざわざコメントする必要はないと思います。読めばわかるので。

コメントが必要なのは

**・なぜこうなるか
・なにをしているのか(これはなにか)
・勘違いしないか**

自分が初めて見るコードだと思って見たときに、
この3点で引っかかりそうならコメントを書くようにしています。

####なぜこうなるか
“`php
// パスワードがない=本登録していないため対象外
if (empty($user->passw

元記事を表示

Laravel8 : 新ログイン「jetstream」を早速試してみた

##Laravel8 : 新ログイン「jetstream」を早速試してみた

みなさんこんにちは
[ジーズアカデミー 主席講師 山崎ですm(_ _)m](https://gsacademy.jp/mentor/)
今回はLaravel8にアップデートされLogin画面作成のMyMemoをしておきます。

以下がLaravel8インストール完了時の画面です。変わってる・・・。

###前提条件/検証環境

– Laravelを基本を理解してCRUDを作成した経験がある人
– 記事内容的には、Laravel8のLoginを使う場合の***自分メモ***です。
– *PHP 7.3.x(確認した環境)*
– **EC2の場合:t2.small (メモリ2G以上必要 “laravel/jetstream”に必要なため,t2

元記事を表示

php 画像向き修正

“`php:image.php
$filename = “パス”

if (mime_content_type($filename) == ‘image/jpeg’) {
$image = ImageCreateFromJPEG($filename);
}else {
$image = ImageCreateFromPNG($filename);
}

$exif_datas = @exif_read_data($filename);
if (isset($exif_datas[‘Orientation’])) {
$orientation = $exif_datas[‘Orientation’];

//回転角度
$degrees = 0;
switch($orientation) {
case 1: //回転なし(↑)
br

元記事を表示

php リサイズ

#画像を扱う前処理
“`php:resize.php
ImageCreateFromJPEG($filename)
“`
これでメモリ(このプログラム内)の中で扱える
#画像をリサイズ
“`php:resize.php
bool imagecopyresampled(resource $dst_image,resource $src_image,
int $dst_x,int $dst_y,int $src_x,int $src_y,int
$dst_w,int $dst_h,int $src_w,int $src_h)
“`

パラメータ
dst_image
コピー先の画像リンクリソース。
src_image
コピー元の画像リンクリソース。
dst_x
コピー先の x 座標。
dst_y
コピー先の y 座標。
src_x
コピー元の x 座標。
src_y
コピー元の y 座標。
dst_w
コピー先の幅。
dst_h
コピー先の高さ。
src_w
コピー元の幅。
src_h
コピー元の高さ。

返り値
成功した場合に TRUE を、失敗した場合に FALSE を返しま

元記事を表示

laravelのバージョンアップを経験して

![laravel_varsionup.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569093/2ccdd69b-ad6f-bfa2-5db3-f45032f2ac46.jpeg)

##はじめに
当方、フリーでPHPエンジニアをやっています。

最近Laravelのvar5.2からvar6にバージョンアップするプロジェクトに携わる機会があり、そこで得た経験を大雑把ではありますが、まとめてみました。
これからバージョンアップを計画している方に少しでも参考になれば幸いです!

尚、テストコードの実装があまりさせていない環境でのバージョンアップでしたが、ちゃんとテストコードを書いている場合は、テスト回して確認する事をおすすめします!

基本的には公開されている[アップデートガイド](https://readouble.com/laravel/7.x/ja/upgrade.html)を見て進めるのが良いです。

##確認する事
– サーバー
– laravelのドキュメント、サーバー要件を確認

元記事を表示

Laravel 8 Release !

![ScreenShot 2020-09-09 1.06.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52879/74f2f9b3-8e44-99a6-25d4-359d684eb2c3.png)

2020年9月8日 Laravel 8 がリリースされました?

Laravel Jetstream、モデルディレクトリ、モデルファクトリー、マイグレーションスカッシング、レート制限の改善、時間テストヘルパー、動的ブレードコンポーネント等多くの新機能が追加されています。
Laravel 8 はLTSではありません。バグ修正は2021年3月8日、セキュリティ修正は2021年7月8日までのサポートになるのでご注意ください。

# Laravel 8 の新機能

https://laravel-news.com/laravel8

(ニュース記事の内容をほぼグーグル翻訳したものです。)

## Laravel Jetstream

https://github.com/laravel/jetstream

元記事を表示

OTHERカテゴリの最新記事