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

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

Laravel6 改行をビューで表示する

# 目的

– PHPのエスケープシーケンスを用いた改行をビューで表示する方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| 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.8 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする](https://qiita.com/miriwo/items/cd54077aad7e139cf518) |
| Laravel バージョ

元記事を表示

[Laravel] 画像アップロード機能

簡単なCRUD機能を作成した際に画像アップロード機能を作成しましたのでまとめました。

#ビューファイルに反映
“`create.blade.php
@section(‘content’)

@include(‘error_card_list’)

@include(‘tweets.form’)
元記事を表示

【業務未経験・独学】自社開発企業様から内定をもらうまでのお話

#筆者のプロフィール
プログラミング歴三年弱
独学

#どのくらい応募したか
エージェントの経由での応募も含めるとだいたい70−80社ほど。そのうち書類通過は15社くらい。
内定は3社いただきました。(1社は自社開発ではないです。)
選考途中のものは全てお断りしたのでもしかしたらもう1−2社くらい内定いただけかもしれないです。
就活期間 2020年10月初旬〜2020年11月中旬の1ヶ月ちょい

#概要
社内で管理しているエクセルファイルとかを勝手にVBAで自動化するうちにプログラミングが楽しくなり、WEB系エンジニアにジョブチェンジ

#具体的な学習方法
基本ほぼ全てアウトプットをベースに学習しました(最近はインプットもするように心がけています。)
なので最初に必ずやりたいことがあってそれを実現する方法を調べるという手順になります。

※途中から学習方法というよりは私がプログラミングができるようになるまでの過程になってます。なんか初学者の方のヒントになればとは思います。

★具体例
エクセルで毎回毎回同じフィルターかけるのめんどくさいからボタンを何個か設置してよく使うフィルターはボタ

元記事を表示

PHPファイルにbootstrapを導入する

# install

composer を用いてインストール
https://getbootstrap.jp/docs/4.5/getting-started/download/

“`
アプリのルートディレクトリに移動

composer require twbs/bootstrap:4.5.0
“`
vendr/twbs/bootstrap が作成される。

# bootstrap.cssとbootstrap.min.cssの違い。

bootstrap.min.cssは、圧縮されているため容量がコンパクト。ただし、それゆえ中身が見にくいので、
開発環境ではbootstrap.cssを用いた方が良い。

#bootstrap.cssを読み込む

“`html
#読み込みファイルのheadに記載

“`

#Sassを用いる場合

Bootstrapをカスタマイズする際に、cssに手を加えていく。その際にSassを用いるこ

元記事を表示

Laravel|同じ処理を複数のControllerで使う時に便利な共通関数を脳死で作成する方法

こんにちは、くりぱんです。

## この記事で実現できること
– 共通関数の作成&実装
– コントローラーの簡略化
– コントローラーのメンテナンス性向上

## 説明
今回実装するのは、Hello world!と出力する処理を複数のコントローラーで実装する時に、それぞれのコントローラーで記述するのではなく、共通関数を作成し同じ処理を何回も書かないようにする方法です。

私の場合、チャット機能実装の際に、チャットルームを作成するという処理を複数のコントローラーで記述しなければならなかったので、チャットルーム作成という機能を共通関数化し、それぞれのコントローラーで共通関数を使い回す手法を行いました。

その時の備忘録を今回簡単に残していこうと思います。

## 開発環境
– OS: MacOS Catalina
– PHP: 7.3.11
– Laravel: 6

## 実装の流れ
1. Laravelプロジェクト作成
1. composer.jsonへ登録
1. composer dump-autoload実行
1. config/app.phpにエイリアスとして追加
1. 共通関

元記事を表示

PHPでオブジェクト同士の関係を可視化する

# はじめに

オブジェクト同士の関係が複雑になってくると関係を楽に把握したくなります。
[BEAR.Sunday](https://bearsunday.github.io/) の生みの親である郡山さん([@koriym](https://twitter.com/koriym))が公開されている [print_o](https://github.com/koriym/print_o) を使用することでオブジェクト同士の関係を可視化できるので、関係の把握が楽にできるようになります。
使い方は簡単なのでReadmeを読めば理解できると思いますがやってみます。

# インストール

“`sh
composer require –dev koriym/printo
“`

# 可視化対象

“`php
new A(
new B(
new E(
new F(),
new G(
new H(
new L(),

元記事を表示

OPcacheが有効になっているPHP-FPMをRead Onlyコンテナで動かす

# 環境

![PHP7.3](https://img.shields.io/badge/php-7.3-blue.svg) ![opcache](https://img.shields.io/badge/opcache-enable-blue.svg) ![Docker](https://img.shields.io/badge/docker-grey.svg) ![php-fpm](https://img.shields.io/badge/php_fpm-grey.svg)

# 前提

– OPcache
– キャッシュ有効化
– file_cache_onlyが無効
– lockfile_pathが/tmp
– PHP-FPM
– pidへのファイルパスなし
– Docker
– Read Only mode

# 方法

opcacheのロックファイルが作成される/tmpにvolumeをマウントします。

“`bash
docker run -d -p 9000:9000 –read-only -v $(pwd)/tmp:/tmp

元記事を表示

セッションIDの取得と再発行

##セッションID取得
`session_id()` = `現在のセッションIDを取得または設定する。`

“`







“`

##セッションIDの再発行
`session_regenerate_id()` = `現在のセッションIDを新しく生成したものと置き換える。`

ページを読み込む度にセッションIDは更新されます。
ユーザーがログインして機密性の高い情報を$_SESSIONに格納する時に、`新しいセッションIDを再発行することでセッションIDの漏洩によるデー

元記事を表示

セッション開始と削除

先ずは`セッション`について少しでも理解しておいた方がいいので、是非こちらの記事を参考にしてください。
セッション:https://qiita.com/yyy752/items/676cf3c3751c70aea7f2
クッキー:https://qiita.com/yyy752/items/9cc85104c3eba900ca3a

##セッション開始
`session_start()` = `新しいセッションを開始、あるいは既存のセッションを再開する。`

“`

“`

##セッション削除
`session_destroy()` = `セッションに登録されたデータを全て破棄する。`
session_destroy()では変数「$_SESSION」のデータは削除されない為、
`$_SESSION = array();`で変数のデータも削除しましょう。`

“`




元記事を表示

Laravelで日付を操作しよう

実務でLaravelを使って日付検索をしたことがあるので、ここで共有+アウトプットをしておく。

リクエストで文字列で渡ってきた日付を操作する必要があったのですが、簡単に調べてみるとdate関数とstrtotime関数を使えば簡単にできそう

###date関数とstrtotime関数とは
公式より引用[date関数](php.net/manual/ja/function.date.php)
公式より引用[strtotime関数](https://www.php.net/manual/ja/function.strtotime.php)

* date関数・・・ ローカルの日付/時刻を書式化する。
指定された引数 timestamp を、与えられた フォーマット文字列によりフォーマットし、日付文字列を返します。 タイムスタンプが与えられない場合は、現在の時刻が使われます。

“`PHP
date ( string $format [, int $timestamp = time() ] ) : string
“`

つまり第一引数のフォーマットにしたがって、第2引数のtimesta

元記事を表示

PHPのtrait上で任意のモデルを`$this`として参照する

## そもそもtraitとは
PHPは仕様として多重継承をサポートしていません。そのためある基底クラスを既に継承している場合に共通の振る舞いを拡張するため継承を追加する、といったことが行えないのです。。
しかし、traitを利用することで共通の振る舞いを切り出し、再利用することが可能となります。

>PHP 5.4.0 以降では、コードを再利用するための「トレイト」という仕組みが導入されました。

>トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。 トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関連するありがちな問題を回避することもできます。

> トレイトはクラスと似ていますが、トレイトは単にいくつかの機能をまとめるためだけのものです。 トレイト自身のインスタンスを作成することはできません。 昔ながらの継承に機能を加えて、振る舞いを水平方向で構成できるよ

元記事を表示

未経験者がLaravelでポートフォリオを作成した話【学習開始〜AWSデプロイまで】

## 簡単に自己紹介
・東京で土木の構造設計をやっている30代前半
・働きつつ、これから転職活動するところ
・健康好きで趣味はアンチエイジング

## どんなアプリ? 何ができる?
ひとことで言うと
「パレオダイエッター(という健康法をやってる人)向けのコミュニティ+計算機能ツール」
です。
画面キャプチャ

基本的なユースケースとしては、
 `・「ユーザー登録/ログイン/プロフィール編集」`
 `・「文字や画像を投稿・編集/いいね/コメントで交流」`
 `・「筋肉をつける・腹筋を割るための目標カロリー算出→マイページ登録」`
という感じになります。

もう少し機能を細分化すると、
 ・ユーザー登録・ログイン機能・ゲストログイン機能
 ・プロフィール編集機能(自己紹介文とアバター画像)
 ・投稿作成機能(

元記事を表示

PHP7 正規表現 preg_match(): Compilation failed: invalid range in character class at offsetについて

#preg_match関数で正規表現を用いた文字列検索でエラー
PHP7.3以降、正規表現を用いたpreg_match()関数

`preg_match(‘|http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?|i’,$line,$data)`

こんな形でURL文字列検索を行ったら以下のようなエラーが、、、
preg_match(): Compilation failed: invalid range in character class at offset

#解決法
正規表現の書き方自体は間違ってないはず(?)と思ってgoogle大先生に聞いてみると、
StackOverflowで以下のような回答を見つけました。
https://stackoverflow.com/questions/24764212/preg-match-compilation-failed-invalid-range-in-character-class-at-offset

まぁ要するに、PHP7.3以降挙動が変わったらしく、-(ハイフン)にはエスケープが必要になった

元記事を表示

Dockerのコンテナビルドでphp-radisのインストールに失敗する

Dockerでコンテナをビルドする中でphp-radisをインストールする際に下のエラーが出た
“`
E: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/p/php-redis/php-redis_4.2.0-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb 404 Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with –fix-missing?

“`
php-redisのバージョンが新しくなり古いファイルが見つからないようだ
Dockerfileでアップデートしたものをインストールする場合は同じRUNの中でアップデートインストールしないいけないらしい
http://docs.docker.jp/engine/articles/dockerfile_best-practice.html
なのでDockerfileの記述は下のように
“`doc

元記事を表示

vimで.phpファイルに書いたhtmlを自動でインデントする方法

“`
” Better indent support for PHP by making it possible to indent HTML sections
” as well.
if exists(“b:did_indent”)
finish
endif
” This script pulls in the default indent/php.vim with the :runtime command
” which could re-run this script recursively unless we catch that:
if exists(‘s:doing_indent_inits’)
finish
endif
let s:doing_indent_inits = 1
runtime! indent/html.vim
unlet b:did_indent
runtime! indent/php.vim
unlet s:doing_indent_inits
function! GetPhpHtmlIndent(lnum)
if exists(‘*Htm

元記事を表示

PHP 復習2

[PHP復習](https://qiita.com/aliceroot0678/items/f421e5bcef4bb30ab716)の続き
ちょっとだけ

#関数
自分で作るやつと組み込み関数がある
組み込み関数は調べたら色々出てくるので割愛。(組み込み関数忘れてた:sweat_smile:)
`rand(a,b)`とかあったよ!これは数字a〜bの間の整数をランダムにかえしてくれるよ!
##関数の作り方
`function 関数名(){処理} `
##関数の呼び出し
関数名();

#formの受け取り
“`html


“`

“`php:受け取るphp側

echo $_POST[キー名];
“`

`$_POST`の中身は連想配列になっている。
キー名:name、値:実際にフォームに入力した値(value)
となるようになっている。
なので、nameの中身は受け取るときにわかりやすいものにしとくとよい。
キー名は

元記事を表示

[PHP] Warning: “continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”? という警告

##どんな警告か?
この警告は、forループ内のswitch文で「**continue**」を記述した場合に表示されます。
switch文内部では「**continue**」が「**break**」と同じ動作となるそう。
以下、公式リファレンスを引用

>注意: PHP では、continue の動作に関しては switch 文がループ構造とみなされます。
>continue に引数を渡さなかった場合の動きは break と同じですが、間違いの元なので警告が生成されます。
>switch がループ内にある場合、 continue 2 とすると、外側のループの次回の処理から続行します。

引用元:[PHP公式リファレンス](https://www.php.net/manual/ja/control-structures.continue.php)

##じゃあどうすればいいの?
forループ内のswitch文で「**continue**」を使用したい場合、
「**continue 2**」と指定します。
これで、「**

元記事を表示

PHP復習

最近、あまりPHP書いてないので、なまらないように見直す。
ついでに後で見返すようにまとめ!:dancer_tone3::dancer_tone3::dancer_tone3:

#文字列結合
`.`

“`php
$fruits = ‘orange’;
echo $fruits.’ジュース’
“`

#変数展開
`”{$変数}”`
:warning:出力するときは**ダブルクオーテーション**で囲む。
シングルクオーテーションだと{$変数}がそのまま文字列として出力される

“`php
$food = burger;
echo “{$food}ください”;
“`
##かつ、または
かつ`&&`
または`||`
#switch文
あんまり使わない?らしい

“`php
switch (条件式){
case 0:
echo ‘大吉です。’;
break;
case 1:
echo ‘中吉です。’;
break;
default:
echo ‘凶です。’;

元記事を表示

項目をランダム選択しその結果(good/bad)もランダムにする。ただしbadの上限あり

こんにちは。@mashiです。

この記事は一応この記事( https://qiita.com/mashi/items/93a088c90839251ef820 )の続きです。

【大項目/小項目/結果(good/bad)という表があり、各大項目にて1つの小項目を選択し、good/badもランダムにする】というものです。

文章だけではよく分からないため、下記の出力イメージです。
技術・勤怠・コミュニケーションにてそれぞれ小項目1つをランダムで選び、goodかbadもランダムにするというものです。
badの個数も0~1の間でランダムです。

|大項目 |小項目 |good |bad |
|—|—|—|—|—|
|技術 |速度 |||
|技術 |品質 |〇||
|技術 |納期 |||
|技術 |ドキュメント |||
|勤怠 |遅刻 ||〇|
|勤怠 |勤怠忘れ |||
|コミュニケーション|挨拶|||
|コミュニケーション|タスク共有|〇||
|コミュニケーション|会議内容|||

前回のコードを用いて実装すると下記のような感じになりました

元記事を表示

PHPのインクルード4つを解説

#まえがき、インクルードとは?

PHPにはインクルードという便利な処理があります。

**各htmlページに同じ処理を何度も書く手間を省いて、共通事項になっている処理を別所から参照できる機能**でもあるし**1つのページの複雑化/長文化を避ける為に別所にソースコードを仕分ける機能**とも言えます。
特に大きくなってしまったウェブページ/サイトを修正する手間を効率化してくれるものと言えるでしょう。

しかし、このPHPのインクルード処理は4種類もの処理があります。そしてそれらは微妙に使い方が違ってきますのでそれを解説したいと思います。

読み込みエラーがある場合で、その後のデータを処理する/しない。
そして、1度だけ読み込む/何度でも読み込む
の、違いで4種類に分かれています。

#「include」…読み込みに失敗しても処理継続するインクルード

例えば、includeを使って、「text.php」を開こうとした際に、「text.php」が無いと言う時、そのIncludeはエラーと処理して、その後の処理を読み込んでいきます。
下記の例だと、

“`php:test.php

元記事を表示

OTHERカテゴリの最新記事