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

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

PHP,Laravel導入

# php インストール
“`:ターミナル
brew install php@7.1
“`
## pathを通す
“`:ターミナル
echo ‘export PATH=”/usr/local/opt/php@7.1/bin:$PATH”‘ >> ~/.zshrc
echo ‘export PATH=”/usr/local/opt/php@7.1/sbin:$PATH”‘ >> ~/.zshrc
“`
更新

“`:ターミナル
source .zshrc
“`
# php バージョン切り替え
“`:ターミナル
7.1から7.3に切り替えたい場合。
brew unlink php@7.1
brew link php@7.3
“`
# パスの変更
`vi .zshrc`

“`
export PATH=”/usr/local/opt/php@7.3/bin:$PATH”
export PATH=”/usr/local/opt/php@7.3/sbin:$PATH”
“`
“`
source .zshrc
“`

# laravel
## composerインス

元記事を表示

Laravelで便利なおすすめComposerパッケージ一覧

# はじめに
Laravelでアプリを作るときに
使うことが多い便利なパッケージをまとめました。
全てComposerでインストール可能なパッケージです。

主に管理画面系のwebアプリ構築の経験が多いため、
パッケージの選定もそのようなアプリで利用するものが多いです。

他にも便利なおすすめパッケージがあれば
ぜひコメントよろしくお願いします。

# 必須
### barryvdh/laravel-debugbar
https://github.com/barryvdh/laravel-debugbar
ブラウザ下部にデバッグバーを表示する。
その時にリクエストで発行されたSQL一覧や、今持っているセッション情報一覧など
デバッグに便利な情報がブラウザ上で確認できるようになる。

### barryvdh/laravel-ide-helper
https://github.com/barryvdh/laravel-ide-helper
IDEを利用してコーディングする際に、
コード補完を強化する。
変数からアローを書いたときにメソッドやプロパティのサジェスチョンがたくさん表示されたり

元記事を表示

php アルゴリズム備忘録

## 文字列の切り出し

任意の文字列とその文字列の「**何文字目**」から「**何文字**」取得するかをプログラムする構文

“` php:hoge.php

“`

#### substr関数
文字を切り出す関数

substr(任意の文字列、 X文字目から、 Y文字切り取る) 

## 絶対値取得

#### abs関数

“` php:hoge.php

元記事を表示

【Laravel】 Cron タスクスケジューラの onOneServer() と withoutOverlapping() の違い

# はじめに

Laravel には Cron を利用したタスクスケジューリング機能があります。

– [Task Scheduling – Laravel – The PHP Framework For Web Artisans](https://laravel.com/docs/7.x/scheduling)
– [タスクスケジュール 7.x Laravel](https://readouble.com/laravel/7.x/ja/scheduling.html)

ところが素でこれをそのまま使うと,ワーカーとして複数インスタンスを立ててスケーリングしている場合などに,重複実行されてしまう問題があります。これを防ぐためには基本は `onOneServer()` を使っておけばいいのですが,なにやら `withoutOverlapping()` というものも存在することを知りました。微妙に用途が異なるみたいなので,ここで整理しておこうと思います。

現在時刻が「$H$ 時 $(i – 1)$ 分 $59$ 秒」であるとします。ここから1秒経過して「$H$ 時 $i$ 分 $0$ 秒

元記事を表示

Vdebugを使ってVimでPHPのデバッグ環境を整える

PHPはずっとPHPStormで書いていて不自由はなかったのですが、最近他の言語でvimを使いだしたところ、全部vimでやりたくなる一過性の病にかかったのでPHPでデバッグ環境を整えています。

PHPのxdebugを実行するのにvimのプラグインVdebugを使います。
[vim\-vdebug/vdebug: Multi\-language DBGP debugger client for Vim \(PHP, Python, Perl, Ruby, etc\.\)](https://github.com/vim-vdebug/vdebug)

全部マニュアルに書いてあるので読めば終了なんですが、せっかく触りながらマニュアルの内容を確かめたので備忘として残しておきます。
ただし、CLIでローカル実行した場合についてです。
ブラウザからのリクエストで起動する場合やリモートデバッグはまたいつか追記するかもしれません。

<実行中の雰囲気>
![phpdbg-memory-2.gif](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

PHP基礎<PHPの書き方・表示方法>

#前書き
PHPを基礎から学習しています。
積み重ねのアウトプットとして更新していきます。

#PHPの書き方

“`index.php

‘); //改行
echo (‘こんにちは’); // プログラム
echo (123);
?> // 終了タグ

“`

– 開始タグを書き、その間にプログラムを記述する
– PHP ファイルの拡張子は .php とする
– ‘○○’シングルクオーテーションは必ず必要
– echoの場合は(  )が無くても可
– ; (セミコロン)は必ず付ける
– コメントアウトは//から改行までか/* から */の範囲に記述する

#ブラウザにPHPを表示する
– MAMPを使ってPHPを表示する

http://localhost:8888/(PHPプロジェクトのフォルダ名)/(PHPファイル名).php
と入力すればブラウザで表示が確認ができる。

#あとがき

初回は基本の書き方のみまとめました。
次回は変数に

元記事を表示

メディアクエリの使い方

#メディアクエリの使い方

個人アプリでレスポンシブ対応が必要だったので、その使い方を記事にまとめました。

“`php:index.blade.php

@foreach($posts as $post)
Laravel環境構築時のエラー解決 Mac

# エラー内容
“`
$ composer global require laravel/installer

Changed current directory to /Users/ooshiroippei/.composer
Using version ^3.1 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Installation request for laravel/installer ^3.1 -> satisfiable by laravel/installer[v3.1.0].
– laravel/installe

元記事を表示

PHPコールバック入門

# *コールバック*

PHPの要素で関数として呼び出すことができるものを***コールバック***(または***Callable***)といいます。

参考:[PHP: コールバック / Callable – Manual](https://www.php.net/manual/ja/language.types.callable.php)
# Examples

## 例1

“`php:PHP
function hello() {
echo ‘こんにちは。’;
}

echo is_callable(‘hello’) . PHP_EOL;

call_user_func(‘hello’);
“`

“`terminal:result
1
こんにちは。
“`

>`is_callable` — 引数が、関数としてコール可能な構造であるかどうかを調べる
>
>[PHP: is_callable – Manual](https://www.php.net/manual/ja/function.is-callable.php)

– – –

>`call_user_fun

元記事を表示

PHP/Laravelの書き方の基本ルールまとめる(PHPフレームワークLaravel入門に入る前に)part3

#クラスとインスタンスについて

##クラスとインスタンスとは
PHPには原本となる型を再利用して効率化を測る機能があります。それがクラスとインスタンスです。
クラスが原本となる型。
インスタンスが型を元にして作成されたものです。
型の中身には、**メソッド**と**プロパティ**という要素が存在しています。
メソッドが**機能**(関数や制御構造など)
プロバティが**データ**(名前や性別といった属性)になります。
以前まとめたものが[こちら](https://qiita.com/bk150125/items/d016c274df8eaa6dd759)になりますので参照ください。
##クラス定義
###覚えること
クラス定義方法
インスタンス作り方
値のアクセス方法
値の入れ方
メソッドの実行方法
コンストラクタ
クラス定義ファイルの読み込み
スタティックプロパティとスタティックメソッド

まずはこいつら
・クラス定義方法
・インスタンス作り方
・値のアクセス方法
・値の入れ方
・メソッドの実行方法
“`記述例.php

元記事を表示

【デザインパターン】PHPでTemplate Methodパターンの実装をしてみた

## 環境
– PHP 7.2.18

## Template Methodパターンとは
Template とと言うのは、よくいろんな人が「テンプレ」などと略すアレです。
メールなどの定型文や、作品のベースとなるひな形などの「決まった様式」のことを指すことが多いですよね。
Template Methodパターンの名前の由来もそこからきていて、決まった処理の流れなどを抽象クラスで「枠」として定めて、具体的な実装の内容は具象クラスで実装するものとなります。

スクリーンショット 2020-06-23 0.18.32.png

## Template Methodパターンは何がいいか
Template Methodパターンを使うことで、似たような処理、繰り返し使われるような処理を共通化することができます。
関数による処

元記事を表示

関数の中で関数を出力

#関数の中で関数を出力

今回は勉強を進めているときに、疑問に思った
関数内での関数や変数の記述の仕方について発見があったので
書き留めておきます

まずびっくりしたのが関数内で別の関数は出力できる!ということ

“`php

元記事を表示

【PHP8】厳密なswitch文ことmatch式が使えるようになる

PHPがよく言われる問題点のひとつとして、[switch](https://www.php.net/manual/ja/control-structures.switch.php)が[曖昧な比較である](https://qiita.com/GHKEN/items/e2c96324a0365a690e86)ということが挙げられます。

“`php
switch($x){
case 1:
‘$xは1だよ’;
break;
case “1”:
‘$xは”1″だよ’;
break;
}
“`

`case “1”`に到達することは決してありません。

ということで厳密な比較を用いるswitchことmatch構文のRFCが提出されました。
以下は[Match expression v2](https://wiki.php.net/rfc/match_expression_v2)の日本語訳です。

# PHP RFC: Match expression v2

## Proposal

このRFCは、switchに似ていますが、より安全なセマンティクスを持つmatch構文

元記事を表示

【Laravel】Carbon Data Missingエラーの対処

### 問題
日付を登録・更新する際に日付フォームのパラメータで、Carbon Data Missingエラーが発生した。
(datepickerを使用していて、渡ってくる値はY-m-d H:i)

このエラーは秒(second)が入っていないなどパラメータが不足することが原因で発生するため、パラメータに秒が含まれてないときの対処法を以下で説明する

### 概要
日付カラムを追加するため、モデルで$datesを設定している

“`php:Model
protected $dates = [
‘public_start_at’,
‘public_end_at’,
];
“`

$datesに設定しているとデフォルトでY-m-d H:i:sとなり、渡される値に過不足があると今回のようにCarbon Data Missingが起こってしまう

下記のようにdateFormatを設定することもできるが日付フィールド全体が’Y-m-d H:i’の形式になってしまうため、扱いづらい。

“`php:Model
protected $dateFormat = ‘Y-m-d H

元記事を表示

[PHP]公式のDockerコンテナにphp-redisをインストールする

# はじめに

php公式のDockerコンテナにphp-redisを入れようと思ったのですが、`apt-get install`でもダメ、`docker-php-ext-install`でもダメで、しばらくハマったのでやり方を書き残しておきます。

## 結論

先に結論です。※バージョン指定は各自で変えてください。

“`dockerfile
RUN pecl install redis-5.1.1 \
&& docker-php-ext-enable redis
“`

## php公式コンテナについて

https://hub.docker.com/_/php

いくつか種類がありますが、大きく分けて2つに分けられます。

– php-cli→cliのみ使用可能。サーバーで動かすことを目的とする場合はこれじゃないです。
– php-fpm→サーバー上で動かす事が多いので基本はこっちを選ぶことになります。nginxのようなサーバーで動かせるようにCGIが含まれています。

## 拡張モジュールのインストール

### PHP拡張モジュール

PHPで作られている拡張モ

元記事を表示

PHPStormなら、「あ〜これ別のメソッドに切り出したいな〜」ってときに一瞬でした

![Jun-22-2020 17-48-06.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268801/60688d66-f9b9-2bc7-91b2-05919f7c8fe6.gif)

# 例

以下のようなコード、
パンケーキを3つ焼くメソッドがありますが、ループの中でパンケーキを焼く処理を細かく記述されています。
もちろんこれでもそれほど悪いコードではないと思いますが、
パンケーキを焼くための詳細なロジックを他のメソッドに切り出せたら、メソッド全体の見通しが少しスッキリしそうです。

“`php
class Test
{
public function makeThreePancake(): void
{
$kitchen = new Kitchen();
$kitchen->initialize();

foreach (range(0, 3) as $i) {
// 見通しが悪い処理

元記事を表示

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/adaaae

元記事を表示

Laravelのマイグレーション備忘録

## はじめに
マイグレーションからテーブルやカラムを作ったり追加する際に、いちいち調べなおすのが面倒になったので備忘録としてまとめておくことにしました。
LaravelのバージョンはLTSの6系を前提としています。

※追記
Laravel 7系でも動作することを確認しました。

## マイグレーションファイルの作成
`php artisan make:migration create_{テーブル名}_table`コマンドで作成されます。
例えばusersテーブルを新規作成するmigrationファイルを作りたい場合は、以下のようにコマンドを打ちます。

“`
php artisan make:migration create_users_table
“`

コマンドで指定したファイル名は、そのままPHPのクラス名として作成されるため、複数マイグレーションファイルを作成する場合はファイル名が重複しないように注意してください。

## マイグレーションファイルの編集
#### テーブルの新規作成
さて、`php artisan make:migration`コマンドを実行すると、`

元記事を表示

Laravelでの画像アップロード

皆さん、こんにちは!今回は私が、Laravelを勉強していて盛大にハマった箇所があるので今後のためにも、この記事を書くことにしました。そのハマった箇所というのが、画像をアップロードする方法です:joy:
あまり良い記事が無かったのでかなり時間を使ってしまいました。では早速いきましょう:v:

#開発環境
・Mac
・php 7.4.6
・Laravel 7.15.0
・MySQL
#Laravel画像アップロード
今回は、Laravelの基礎知識があることを前提に話を進めて行きます。
今回私が作成したのは以下のようなものです。
![スクリーンショット 2020-06-22 13.01.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645930/3114f0d3-3b3a-fe84-a7bb-9d6cc5aca4b7.png)
このようなフォームを送信すると、
![スクリーンショット 2020-06-22 13.03.16.png](https://qiita-image-store.s3.ap-n

元記事を表示

PHPでDBから配列を取り出し、jsに渡して、chart.jsでグラフ作成

caledar_tableにあるTUTORというカラムの数をカウントし、グラフにする。

“`PHP
$sql = “SELECT TUTOR,COUNT(TUTOR) AS COUNT FROM CALENDAR_TABLE GROUP BY TUTOR ORDER BY COUNT DESC”;
$stmt = $pdo->prepare($sql);
$status = $stmt->execute();

$res = $pdo->query($sql);
//取得したデータを全てフェッチする
$data = $res->fetchAll();
“`

“`javascript
var data_array = ;
name_array = [];
count_array = [];
for(key in data_array){
name_array.push(data_array[key][0]);
count_array.push(data_array[key][1]);
// alert

元記事を表示

OTHERカテゴリの最新記事