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

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

配列処理スピード比較

##配列のループ処理の速さは??
配列の要素に対して処理を行いたいことはよくある話だが何が一番早いのか検証してみた。

ちなみに配列

“`php

$array = array();
for($i = 1; $i < 100000; $i++){ $array[] = $i; } ``` 処理させる内容 ```php function hundredNumber($n){ return $n * 100; } ``` 処理速度を測る関数はこちらを参考にさせていただきました。 >[PHPの処理速度の計測方法](https://qiita.com/HidakaRintaro/items/8893f1a36709eee3582f)

#foreach
定番の配列処理

“`php
$start = hrtime(true);

$result_array = array();
foreach($array as $num){

$result_array[] = hundredNumber($num);
}

$end = hrtime(true);

ec

元記事を表示

PHP初心者に超オススメのUdemy講座6つを厳選!web入門者必見

この記事では、Udemyのオススメ初心者向けPHP講座を紹介します。

・未経験だけどwebアプリケーションを作れるようになりたい
・将来的にサーバーサイドエンジニアになりたい
・自分でコードを書くかは未定だけど、ウェブサービスを作って起業したい

といった人にオススメできるものをチョイスしました。

## PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門
おすすめ度:★★★
・[PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門](https://px.a8.net/svt/ejp?a8mat=3BBPJR+AVR8TU+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fphp7basic%2F)
### この講座で学べる内容
・PHPの基礎知識とMySQL(MariaDB)の基礎が修得できる
・SQLの基礎が修得でき、データベースを利用したプログラムを作成できる
・PHPを利用したプログラムを作成でき、サーバーサイドのWebサービスを開発できる
・デー

元記事を表示

単一責任の原則をLaravelで学習した

単一責任の原則について調べていると「**クラスとメソッドは1つの責任だけを持つべき**」など諸々調べると出てくるが、概念的にはわかるもののいまいちコードに反映することができていなかったので、モヤっとしていた。
そんな時に、いい感じのサイトに出会えたので勉強がてらまとめておく。

いい感じのサイト↓
[Laravelベストプラクティス](https://github.com/alexeymezenin/laravel-best-practices/blob/master/japanese.md#%E5%8D%98%E4%B8%80%E8%B2%AC%E4%BB%BB%E3%81%AE%E5%8E%9F%E5%89%87)

## 実際にコードを見てみる

以下に登場するコードは上記のサイトから転記したものです。

### 単一責任の原則に反するコード

“`php
public function getFullNameAttribute()
{
if (auth()->user() && auth()->user()->hasRole(‘client’) && auth()

元記事を表示

PHPでselectBox作ってみた

##PHPでselectBox作ってみた

タイトル通りです。

“`php
“;
foreach($busho_list as $key => $busho){

$selected = “”;
if($key === $select_option){
$selected = “selected”;
}
$select_box .= ““;
}
$select_box .= ““;

echo $select_box;

“`

変数$select_optionにデータベースから取得した値を代入することでデフォルトの選択を動的に変更することができます。

$busho_list自体もマスタなどか

元記事を表示

dockerでphpのサーバーを立てる

カレントディレクトリにphpファイルを置く。

“`index.php


PHP Test


Hello World

‘; ?>


“`

apacheが含まれているdockerコンテナを動かす。

“`
docker run -it –rm –name php -p 80:80 -v $PWD:/var/www/html php:apache
“`

サーバーが立つ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396969/05423136-a2ba-c02e-45c7-9243910d854c.png)

元記事を表示

【5枚目】おっさんが入門CakePHP (動画第6回:新規登録の解説)

ケーキも5枚目に成ってかなり胃もたれしてきてます。。。
動画再生(2倍で)娘に又それかよって言われながら進めてます。

今回の動画でやること
・新規登録の動きを確認
・Code解説 新規登録画面を開く
・Code解説 ユーザ登録をする

前回配置したソース類を使用してお勉強するので今回はほ見るだけ。(ソースは追いかける)

いつも通りXAMPPからApacheとMySQLを開始して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/490a1040-332e-f875-ba86-70471027628f.png)

WEBブラウザで画面動作確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/d8eb87dc-513c-2bc3-c467-c68b5a95deb9.p

元記事を表示

Laravel Sail 導入時に発生したエラーと解決方法

Laravel Sailを使ってLaravelをインストールしてみようとしたときのうっかりミスとその解決方法。

## うっかり編
[公式ページ](https://laravel.com/docs/8.x/installation#getting-started-on-macos)に書いてあるインストレーションを進める。

“`bash
$ curl -s “https://laravel.build/example-app” | bash

docker: Error: remote trust data does not exist for docker.io/laravelsail/php80-composer: notary.docker.io does not have trust data for docker.io/laravelsail/php80-composer.
See ‘docker run –help’.
bash: line 16: cd: example-app: No such file or directory

Please provide yo

元記事を表示

【実務で使えるLaravel】取得したデータを配列に追加する方法

実務の学びを記事にします。

取得したデータを配列に追加する方法です。

“`php
$hoge = array();
$categories = $this->category->findCategories();
foreach ($categories as $category) {
array_push($hoge, $category->category_name);
}
“`

$categoriesはコレクションでカテゴリーデータを何件か取得するロジックです。
まず、$hoge = array()で空の配列を用意し、array_pushで配列の最後に要素を追加できます。

“`
array:3 [▼
0 => “85HCKP3sfL”
1 => “XOF4msHVdd”
2 => “ir10PRKDGp”
]
“`

こんな感じで配列にカテゴリーの名前を追加できます。

もう一つプラスαで覚えておくべきは、in_arrayです。

“`php
if

元記事を表示

[PHP] GoogleAdsAPIでSearchした結果の総件数を取得する方法

例えば広告グループをSearchする場合、GoogleAdsAPIのリファレンスやExampleを見ても、API通信のResponseから広告グループ名やResourceNameを取得する方法はすぐわかりますが、広告グループがいくつあるかを取得する方法は探しづらかったので、他の方がこんなことに時間かけなくていいようにという意味も込めてメモ。

#どこに総件数が入っているのか?
結論から言えば、SearchGoogleAdsResponse クラスに、「total_results_count」というプロパティがあり、これが取得結果の総件数にあたります。

URL:https://developers.google.com/google-ads/api/reference/rpc/v8/SearchGoogleAdsResponse

じゃあ公式のExampleを少しいじって、このプロパティを取得しにいけばええやろがいと思われるかもしれませんが、GoogleAdsAPIのリファレンスばかり見ているとその方法にたどり着けないです。

#公式のExampleを見てみよう
私がやったときはアカウ

元記事を表示

【PHP】少数切り上げのやり方

“`PHP
= 5:
$colspan = 3;
$rowspan = ceil($count / 3);
break;
}

元記事を表示

【PHP】多次元配列の重複を削除

“`PHP

[ ‘id’ => 10, ‘language’ => ‘PHP’, ‘framework’ => ‘Laravel’],
1 => [ ‘id’ => 20, ‘language’ => ‘Java’, ‘framework’ => ‘Spring’],
2 => [ ‘id’ => 30, ‘language’ => ‘JavaScript’, ‘framework’ => ‘Vue.js’ ],
3 => [ ‘id’ => 40, ‘language’ => ‘Ruby’, ‘framework’ => ‘Ruby on Rails’ ],
4 => [ ‘id’ => 40, ‘language’ => ‘Ruby’, ‘framework’ => ‘Ruby on Rails’ ],
5 => [ ‘id’ => 40, ‘language’ => ‘Ruby’, ‘framework’ => ‘Flutte

元記事を表示

Laravelでイベントを用いてメールを送信する

## 概要
Laravelのイベントとリスナーを使って、フォームからの問い合わせが来たときに、通知メールを送信する処理を実装します。

## 実行環境
https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4

上記の記事を参考に、GitHubのテンプレートリポジトリから環境を構築しています。

Laravel6.*

## 実装の大まかな流れ
1. 環境変数にメール送信に必要な情報を設定
2. メール送信用クラスの作成
3. メールのViewを作成
4. イベントの作成
5. リスナーの作成
6. イベントとリスナーを紐づけ
7. イベントの発行

### 環境変数(.env)に必要情報を設定

“`env:.env
MAIL_DRIVER=smtp
MAIL_HOST=XXXXX.jp //サーバのドメイン名やIPアドレス
MAIL_PORT=587 //ポート番号は各環境に依存
MAIL_USERNAME=XXXXX@XXXXX.co.jp //メールで利用するユーザ名
MAIL_PASSWORD=XXXXX //メールで利

元記事を表示

Laravel5.5を8.58にアップグレードした際の手順メモ

PHP のWebアプリケーションフレームワーク **Laravel** を最新バージョンに更新しました。
ほぼ個人的な備忘録なので解説はありません。環境に合わせて読み替えて下さい。

# 環境
Red Hat Enterprise Linux のリビルド版だった CentOS のサポート終了に伴い、Laravel移行と同じタイミングで Ubuntu に乗り換えています。

“`:旧環境
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

$ php -v
PHP 7.2.3 (cli) (built: Feb 28 2018 08:39:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

$ php artisan –version
Laravel Framework 5.5.50
“`

“`:新環境
$ cat /etc/o

元記事を表示

laravel5.5で、Authを使ったログイン時アクセスしたい画面にリダイレクトする方法

さっと書きます。

今回実装したいのは、
ログインが必要なページにアクセスした際ログイン画面にリダイレクト

ログイン

アクセスした元のURLにリダイレクトされる

といった簡単な内容です。

## すぐ答えです。以下です。

Laravel 5.5の場合、LoginController.phpを更新するだけで次のコードが機能しました

“`php

public function showLoginForm()
{
session([‘link’ => url()->previous()]);
return view(‘auth.login’);
}

protected function authenticated(Request $request, $user)
{
return redirect(session(‘link’));
}

“`

セッションに残して、それにリダイレクトさせる簡単なコードで実装できました。

参考文献
https://www.it-mure.jp.net/ja/php/laravel-5%E3%83%AD%E3

元記事を表示

Laravelログイン認証のリダイレクトについて

#はじめに#
 Laravelを使うと簡単にログイン機能を実装できますが、反面、完成されすぎていてカスタマイズするには結構調べないといけません。大した内容ではありませんが、今回はそんな中でもリダイレクトについて備忘録として残して行きたいと思います。

#ログインしていないユーザーをリダイレクト#
 まずは、ログインしていない状態で、あるページにアクセスしようとするとログイン画面にリダイレクトする方法をご紹介します。ログイン前に表示させたくないコントローラーに下記のように書いてください。

“`HomeController.php
public function __construct()
{
$this->middleware(‘auth’);
}
“`

 これだけでOKです。何が起きているのかは正直よく分かりませんが、とにかくこれでログイン画面へリダイレクトされるようになります。認証に関わるものはMiddlewareで定義されています。ちなみに、リダイレクト先を変更する場合もMiddlewareで変更することが出来ます。

“`App\Http\

元記事を表示

LaravelのRedisでワイルドカードのパターンに一致するキーを一括削除する

Redisではキーにワイルドカードを使って一括削除するコマンドがありません。
今回はLaravel5.8でRedisのキーをワイルドカードを使って、一括削除する方法を共有します。

## 一括削除する方法(prefixあり)

“`php
$keyPattern = ‘hogehoge_*’;
$keys = array_map(function ($key) {
return str_replace(config(‘database.redis.options.prefix’), ”, $key);
}, Redis::keys($keyPattern));
if (!empty($keys)) {
Redis::del($keys);
}
“`

複数のコネクションを使っていてそれぞれprefixが違う場合は、
`config(‘database.redis.options.prefix’)`の部分を適宜修正してください。

Laravel5.8からはデフォルトでprefixが指定されているので上記のprefixありで実行してください。

## prefixを

元記事を表示

composer installした際、メモリエラーになる場合の対応

docker環境で`composer install`した際、メモリエラーになる場合の対応。

“`
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
“`

`COMPOSER_MEMORY_LIMIT=-1`を追加して`composer install`を実行する。

“`
COMPOSER_MEMORY_LIMIT=-

元記事を表示

PHP(Laravel) 空白を含む検索

# はじめに
空白区切りで複数の検索をかけれるようにしたい。

【例】 ”Ruby PHP JavaScript” → `Ruby` `PHP` `JavaScript`

# 条件
“`bash
mac OS “11.2.3 Big Sur”
Laravel Framework “6.20.27”
PHP “8.0.7”
“`

# 最終的なコード
`Controller`と`Model`に分かれています。
Controllerで使用している関数をModelの方で定義しています。

“`php:Controllers/SearchController.php
class SearchController extends Controller
{

public function __construct(Search $search)
{
$this->search = $search;
}

public function index(Request $request)
{
$query = Recipe

元記事を表示

Laravel 8でテキストを改行させ、埋め込まれたJSを実行させない方法。

“`

{!! nl2br(e($post->body)) !!}

“`
e()で文字実態参照に変換。
nl2br()で改行コードを改行タグに変換。
{!! !!}でbrタグで改行させるようにする。(文字実体参照への変換を無効にする)

元記事を表示

PHP で定数を使ってみる

##PHPで定数を使ってみた

ちなみに定数とは

>const キーワードか、 define() 関数を使うことで、定数を宣言することが出来ます。 define() を使えば任意の式を使って定数を定義できますが、 const キーワードを使う場合には、 次の段落で説明する制約があります。 定数が一度定義されると、 変更または未定義とすることはできません。
>>https://www.php.net/manual/ja/language.constants.syntax.php

みなさんPHPで定数って使ってますか??
私は古いシステムを修正することが多いのですが、定数を使っているプログラムは非常に少ないです。(あくまで私の偏見ですが)

私は師匠に定数は積極的に使っていけと習ったので、プログラムの先頭には定数が並んでいる場合が多いです。

DBに保存される際にINT型で保存されるけれど、画面に出力される時は日本語で表示してね、といった文言は是非定数を使ってあらかじめ定義しておきたいですね。
例)曜日、旧暦、性別など

“`php

元記事を表示

OTHERカテゴリの最新記事