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

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

Laravel用コマンドチートシート

# Laravelプロジェクトの作成
“`
composer create-project –prefer-dist laravel/laravel プロジェクト名
“`

# 起動
“`
$ cd SampleProject
$ php artisan serve
“`

# モデルの作成

“`
$ php artisan make:model CreateModel
“`

# コントローラーの作成

“`
$ php artisan make:controller CreateController
“`

# マイグレーションコマンド系

“`
$ php artisan make:migration make_migration マイグレーションファイル作成
$ php artisan migrate マイグレーションの実行
$ php artisan migrate:refresh 全てのマイグレーションをリセットし、再度実行
$ php artisan migra

元記事を表示

比較演算子とfor構文

– while構文

“`php
$i = 1;
while ($i <= 365){ print $i . PHP_EOL; $i = $i + 1; } ``` - 比較演算子 `<=` - 不等号のこと - `A

元記事を表示

Laravel バリデーションで変数を利用

# Laravelのバリデーションで変数の使い方

##なぜ気になったのか
ECサイトを制作中に、商品をカートに追加する際にデータベース上の商品の在庫数以上の数を買い物かごに入れることができてしまう。
バリデーションを利用するときに商品の在庫数はそれぞれ異なるので固定の値は設定できない。
商品ごとにデータベースの商品の在庫数をMAXとしてそれ以上買い物かごに入れる時にはバリデーションを発動してエラーメッセージを出したかったから。

##まず試したこと
“`
$data[‘test’] = 5;
$max = 10;

$validator = Validator::make($data, [
‘test’ => ‘max:$max’,
]);
“`
これでは全くバリデーションは効かず

##ではどうするべきか。
PHPで変数を文字列内で展開したい場合は変数を`{ }`(波括弧)で囲って書くことで、文字列の中に変数があること明示している。
ただし、文字列の中に変数を入れる場合は、文字列を必ず`” “`(ダブルクォーテーション)で囲む必要がある。

元記事を表示

Laravel5.6以降のLog設定の小ネタ

config/log.phpでログを設定するようになってからの設定方法についての小ネタ。
ドキュメントに明示されておらず、StackOverflow等でもなかなか出てこないので書いておく。

## monolog driver以外でも、Formatterはconfig/log.phpで指定できる

https://laravel.com/docs/6.x/logging#customizing-monolog-for-channels
>
Monolog Formatters
When using the monolog driver, the Monolog LineFormatter will be used as the default formatter. However, you may customize the type of formatter passed to the handler using the formatter and formatter_with configuration options:

“`php
‘browser’ => [
‘dr

元記事を表示

Ruby、PHP、Java、JSでの書き方の違い

##はじめに
「Rubyでプログラミングの基礎を学んだから、次はjsやってみようかな!」

「書き方ごちゃごちゃになって、何が何だかよくわかんねー!!」

こんな人もいるのでは?

僕自身も以前、詰め込みすぎでパンパンになりましたので、書き方の違いをわかりやすくまとめてみました。
一つ一つ覚える必要はありませんので、この記事を、ストックしていただければと思います。
オブジェクト指向の理解も多少深まると思いますので、最後までご覧ください!

## 文字出力
基本となる文字の出力。言語によって処理のされ方が違うので難しいところですが、基本なのでしっかり押さえましょう。Javaはやっぱり記述が長いですねw

“`ruby:
#Ruby
puts “こんにちは”
“`
“`php:
#PHP
echo “こんにちは”;
“`
“`java
//Java
System.out.println(“こんにちは”);
“`
“`javascript
//JavaScript
console.log(“こんにちは”);
“`

## 変数代入

元記事を表示

Laravel Dusk テストコード作成時の困った場合の対処法

Laravel dusk でブラウザテストを作成していて困った部分の対処法のメモです。
間違っている箇所があればご指摘いただけましたら幸いです。

## dusk失敗の原因が知りたい
app\tests\Browser\screenshots配下に失敗時の画面スクリーンショットが作成されます。

## The MAC is invalid.
暗号化キーを再生成する → php artisan key:generate
※暗号化したパスワードが複号できなくなるので取り扱い注意
[引用]
https://error-search.com/error-post/detail/144/The%2BMAC%2Bis%2Binvalid.

## Operation timed out after 30001 milliseconds with 0 out of -1 bytes received
jsの読み込みがが遅い場合、テストの速度に画面が追い付いていない場合に出現するエラーです。
waitFor waitForText なりを入れてから検証すること。

## 要素の表示をwaitで待つ

元記事を表示

phpのスーパーグローバル変数の定義variables_orderについて

## variables_orderとは

php.iniには以下の定義があります。

“variables_order = “EGPCS”“

それぞれスーパーグローバル変数の作成をする定義をします。
それぞれ頭文字で以下を表わします。

“E“:Environment (環境変数)
“G“:Get
“P“:Post
“C“:Cookie (クッキー)
“S“:Server

## Eは指定しないほうがいいのか?

phpのバージョンによってはデフォルト値が変わってくるようです。
7.3に上げたら”GPCS”となりました。

>; This directive determines which super global arrays are registered when PHP
; starts up. G,P,C,E & S are abbreviations for the following respective super
; globals: GET, POST, COOKIE, ENV and SERVER. There is a perform

元記事を表示

【laravel】マイグレーション、やり直しコマンドいろいろ

テーブルの修正、再構築のコマンドについて簡単にメモします。

マイグレーションはそのDBのmigrationsテーブルで管理されます。
migrationsテーブルにはbatchというカラムがあり、値の順にmigrateされたことを表します。下のDBではcreate_photos_tableファイルが直近で実行されたということになります。
スクリーンショット 2020-02-05 11.51.43.png
###status
マイグレーションの状態を確認します。

“`
php artisan migrate:status

+——+————————————————+——-+
| Ran? | Migration

元記事を表示

Laravel Requestが全部string型なのを何とかする

# はじめに
弊社は

“`php
service->show($request->ge

元記事を表示

Docker環境にて、PHPのデバッグができるかどうか試しにやってみた

#はじめに
・今の職場にてPHPの開発をしているだが、デバッグができなくて困っている。苦肉の策でログを出しながら確認しているが、なんとかしたいと思い。
最近かじったDocker環境にてPHPのデバッグができる様なので、試しにやってみた。

#使用ツール
|項目 |バージョン |
|—|—|
|PC|Razer Brade Pro 2019|
|OS|Ubuntu 18.04 LTS |
|Docker |19.03.5|
|Docker-Compose |1.17.1 |
|PHP |php:7.2.7-apache (連携されているコンテナ)|
|Xdebug |2.7.0 |
|Visual Studio Code|1.41.1 |

“`dockerfile:Dockerfile
FROM php:7.2.7-apache

RUN apt-get update && \
docker-php-ext-install mysqli && \
pecl install xdebug
“`

“`yml:docker-comp

元記事を表示

while構文

while構文

“`
繰り返す条件を作るための初期化処理
while (繰り返す条件){
  繰り返したい処理
  更新処理
}
“`
↓↓↓↓↓

“`
$i = 1;
while ($i <= 365){ print $i . PHP_EOL; $i = $i + 1; } ``` - 一番重要なところは「繰り返す条件」`($i <= 365)` - ◯◯が△△になったら繰り返してください、◯◯が△△ではなくなったら繰り返しをやめてください、といった条件を記述する - 上記の場合は『$iという変数の内容が365以下の間繰り返す』と言った条件になっている - `$i`は最初どういう状態なのか? - 「初期化処理」`$i = 1;`の部分で行われる - `$i = 1`として数字の1を代入しているので、最初の`$i`の状態は 1 であることがわかる - while構文の条件である『$iが365以下』に該当するので、while構文の中括弧に入って「繰り返したい処理」が行われる - while構文は「繰り返したい処理」が終わると、元の

元記事を表示

備忘録_レンタル共用サーバーでcomposerを使う

1. 以下のリンクを参考に、composerインストール用のPHPファイルを作成
※諸事情により`php -r`が実行できん場合に限る
https://getcomposer.org/download/

“`

元記事を表示

【PHP】配列を文字列(EDI情報)化

#はじめに
EDI情報作成時に使ったロジックなので備忘録として残します。

#サンプルコード

“`php
class TestA
{
public function __construct()
{
$this->test1 = “00”;
$this->test2 = ” “;
$this->test3 = “00”;
$this->test4 = ” “;
$this->test5 = “GG”;
}
public function getTest1()
{
return $this->test1;
}
public function setTest1($test1)
{
$this->test1 = $$test1;

return $this;
}
・・・(省略)
}

class TestB
{
$test;

public function build()
{
$this->setTest(new TestA

元記事を表示

DoctrineCacheBundleが非推奨になったのでSymfonyのCacheを使うようにした

## 概要

Symfonyのアプリケーションで、キャッシュをする際に `DoctrineCacheBundle` を使っていたが、
`doctrine-bundle` が2.0系にバージョンアップしたタイミングで、
`DoctrineCacheBundle` が非推奨になっていたので、
SymfonyのCacheで実装したのと、その際に **クリアキャッシュで少しハマった話。**

## 環境

– Docker
– Symfonyアプリケーションが動作するWebコンテナ(`:443`, `:80`)
– Apache 2.4.41
– PHP 7.3.9
– Symfony 4.4.3
– PHPUnit 8.5.2
– DBコンテナ(`:3306`)
– MySQL 5.6
– Memcachedコンテナ(`:11211`)

## 実装方法

`doctrine-bundle` パッケージが 2.0系にバージョンアップしたタイミングで非推奨になった。

https://github.com/doctrin

元記事を表示

【WebAudioAPI】録音した音声をバイナリデータ化、PHPへ受け渡し

#概要
Node.js上で、IBMのWatsonによって人が話した音声データを自動で文字起こしするスクリプトを作成しました。
その中で、結構苦労した
PCのマイクに直接アクセス→録音した音声データをバイナリデータ化、PHPへ受け渡し
の部分をメモがてら貼り付け。
#環境
“`
$php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
“`
#録音部分
“`hogehoge.js
// 音声データのバッファをクリアする
audioData = [];

//様々なブラウザでマイクへのアクセス権を取得する
navigator.mediaDevices = navigator.mediaDevices || navigator.webkitGetUserMedia;

//audioのみtrue

元記事を表示

fputcsvのダブルクォーテーション問題をスッキリ解決する

# 経緯

文字列をダブルクォーテーションできっちりくくった状態でcsvに吐き出す必要があった。
SQL側で文字列結合とかquote_identとかでダブルクォーテーション付けて結果を取得し、fputcsvで書き出すと下記状態になってしまっていた。

( ゚д゚) ・・・ (つд⊂)ゴシゴシ (;゚д゚)

“`
“””文字列”””,”””文字列”””,….
“`

どうやらfputcsvが残念仕様でPHP的には良くある話のようだ。
割とfputcsvを再発明して関数とかで何とかしてる人が多い気がする。

**ワイはそんなのやりたく無い**

# どうやったか

文字列にして乗り切った

“`php
fputcsv($file, 文字列);
“`

“`php
file_put_contents($file,implode(“,”,文字列).PHP_EOL,FILE_APPEND);
“`

元記事を表示

【Laravel】24時間以内に作成されたユーザーの数を集計する【指定範囲のデータ取得】

# 1日
“`php
use DB;

DB::table(‘users’)
->orderBy(‘created_at’,’desc’)
->whereRaw(‘created_at > NOW() – INTERVAL 1 DAY’)
->count()
“`

# 30分

“`php
->whereRaw(‘created_at > NOW() – INTERVAL 30 MIN’)
“`

# リファレンス

* [MySQL :: MySQL 5\.6 リファレンスマニュアル :: 12\.7 日付および時間関数](https://dev.mysql.com/doc/refman/5.6/ja/date-and-time-functions.html)

この記事が作成されている時点では、以下のリファレンスが用意されていたのですが、バージョンアップで参照できなくなるとおもうので、適宜環境にあったリファレンスを参照してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

LaravelでAWS認証エラーが起きる?恐らくそれはconfig_cacheの影響です

約6年ぶりくらいにPHP(初Laravel)を触ってるのですがプチハマりしました。残存cacheの影響でハマるとか、物凄く良くありそうなシチュエーションなのに具体的な解決策を見つけられなかったので書いておきます。

LaravelでAWSソリューションを使ってるとこんなエラーレスポンスにめぐりあうかもしれません。

“`
{
“code”: “400”,
“message”: “Client error: `GET http://169.254.xxx.xxx/latest/meta-data/iam/security-credentials/` resulted in a `404 Not Found` response:\n\n

元記事を表示

文字列・配列の変換など

###文字列を配列に変換 
“`php:qiita.php
$menu = ‘プリン,ショートケーキ,ガトーショコラ,いちごパフェ,パンケーキ’;
$menu = explode(“,”, $menu);
// , を配列の要素の区切りとする。
print_r($menu);
//Array ( [0] => プリン [1] => ショートケーキ [2] => ガトーショコラ [3] => いちごパフェ [4] => パンケーキ )
“`

###配列を文字列に変換
“`php:qiita.php
$menu = implode($menu);
echo $menu;
//プリンショートケーキガトーショコラいちごパフェパンケーキ

//引数に区切りを指定できる
$menu = implode(“,”, $menu);
echo $menu;
//プリン,ショートケーキ,ガトーショコラ,いちごパフェ,パンケーキ
“`

###文字列に区切り(、 とか)がないとき
“`php:qiita.php
$num = “01234567890”;
$num =

元記事を表示

PHP 変数の誤用

PHPを勉強中です。
サンプルプログラムを作成していて、思ったように動作しないことがあります。
いろいろ、さんざん調べた挙句、変数名が違っていることが往々にしてあります。
たとえば、$_SESSIONを$SESSIONと記述していたりなどです。
PHPのビルトインサーバーやデベロッパーツールにエラーが表示されれば、助かるのですが、そのような方法は無いのでしょうか?

元記事を表示

OTHERカテゴリの最新記事