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

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

【初心者】PHPでバブルソートを使ってみた。

# バブルソート
何度も使うので覚えておいた方が良いのかもしれないので、チラシの裏な感じで。
バブルソートとは隣り合う要素の大小を比べながら小さい順(大きい順)に並べること。

for($i = 0, $i < n, $i++) for($j = 1, $j < n, $j++) $jx = $j - 1; if($jx > $j){
$temp = $jx;
$jx = $j;
$j = $temp;
}
}
}
こんな雰囲気で、左隣が右隣より大きかったら、空の箱($temp)を用意して、一時的に避難させて、入れ替える。
大きい順に並べたかったら逆にすれば良いのだろうなという想像をしながら、今日の学びは終了。

元記事を表示

【DB接続後sqlを渡すパターン】

`beginTransaction()`と`commit()`の使い方をわかっていなかったのでメモ

一つのsql文ですむ場合
`prepare()`と`execute()`だけでいい

“`php
try{
$db = new PDO(‘mysql:host=localhost;dbname=users’,’root’,’pass’);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERROMODE_EXCEPTION);
}catch(PDOException $e){
print $e->Message();
}
$sql = ‘INSERT INTO users (name) VALUES (?)’;
$stmt = $db->prepare($sql);
$stmt->execute(“taro”);

“`

関連する複数のsqlをinsertなどしたい場合(どれかが欠けるとおかしくなる時)
beginTransaction()を使って、失敗したらrollbackさせる。

“`php
try{
$db = new PD

元記事を表示

LaravelのSeeder実行時に「Class ‘Database\Seeders\Datetime’ not found」エラーが出たときの対処法

# 背景
LaravelでSeeder実行時に少々詰まったので共有します。

# 環境
Laravel Framework 8.15.0

# 現象
Seederファイルを用意した状態でSeederを実行するとエラーが発生する

“`terminal
$ php artisan db:seed
Seeding: Database\Seeders\FutsalsTableSeeder

Error

Class ‘Database\Seeders\Datetime’ not found

at database/seeders/FutsalsTableSeeder.php:22
18▕ [
19▕ ‘name’ => ‘futsal 1’,
20▕ ‘place’ => ‘tokyo’,
21▕ ‘url’ => ‘xxx’,
➜ 22▕ ‘created_at’ => new Datetime(),

元記事を表示

phpUnitの練習をしたのでメモ

phpUnitの練習をしたのでメモしておく

**書いているテストは全てGreen**

## 数値関連
“`php
$answer = 1 + 1;
$this->assertIsInt($answer);
$this->assertIsNotFloat($answer);
$this->assertIsNumeric($answer);
$this->assertEquals($answer,2);
$this->assertNotEquals($answer, 100);
$this->assertGreaterThan($answer, 5);
$this->assertGreaterThanOrEqual($answer, 2);
$this->assertLessThan($answer, 1);
$this->assertLessThanOrEqual($answer, 2);

“`

## boolean関連

“`php
$this->assertIsBool(true);
$this->assertIsBool(false);
$this->assertTr

元記事を表示

【Laravel6でエラーが出た】BadMethodCallExeption: Method Illuminate¥Routing¥Rout::get does not exist.

#【Laravel6でエラーが出た】BadMethodCallExeption: Method Illuminate¥Routing¥Rout::get does not exist.

##使用環境
* windows 10 Home(COREi7)
* XAMPP 7.3.18
* Laravel 6

##背景
Laravel5.7入門の動画に沿ってLaravel6の学習をしていた。
しかしながら、ところどころ違うところも出てきており、極力、ファイルをいじらずに進め、**php artisan serve**をしようとしたところエラーが発生。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615830/1c8a8ead-bf4e-f7cf-f998-311d605603d5.png)

routesディレクトリ中のweb.phpを見てみると、以下のようになっていた。

“`php

元記事を表示

Laravel8をノリで使ってみたらTarget class [◯◯Controller] does not existと表示された

今までLaravle6や7でアプリなどを作っていたが8にバージョンアップになったと聞いて早速8を使ってみたら、今まで見たことないエラーメッセージが表示されたのでここにメモとして残すことにした。

記述したコード
routes/web.php

元記事を表示

PHPのThread Safetyが有効になっているかを調べる

###### tags: `php`

PHPには,スレッドセーフ版とノンスレッドセーフ版というのがある.

TS版,NTS版とか,PHP TS, PHP NTSとか呼ばれたりもする.

自分の環境で有効になっているかを確認するには,`phpinfo()`の出力や,`php -i`の出力を確認すればよい

> phpinfo()の結果を見るとわかる。Thread Safetyの項がenabledならスレッド・セーフ版、disabledならノン・スレッド・セーフ版である。
https://clover.fcg.world/2017/03/19/8093/#toc1

## 確認方法

### linux

linuxで確認する場合は以下.

“`
$ php -i | grep -i “thread safety”
Thread Safety => disabled
“`

### windows

windowsで確認するためには powershell で以下のように発行する.

“`
> php -i | Select-String -Pattern “Thread Safet

元記事を表示

sabre/dav

## インストール

* https://sabre.io/dav/install/

“`sh
composer require sabre/dav
# データの保存場所
mkdir -p /home/share/webdav/
chmod 700 /home/share/webdav/
# lockファイル用
mkdir data
“`

## 利用方法

“`php:/webdav/server.php
setBaseUri(‘/webdav/server.php’);

$lockBackend = new DAV\Locks\Backend\File

元記事を表示

【PHP】配列Aの並び順を正として、配列Bを並び替える

# 本記事の趣旨
PHPの配列について、備忘のためメモします。
誰かの何かの役に立てれば幸いです。

# 要件
配列A(以下”見本”)の要素の並び順を正として、配列B(以下”要並び替え”)の要素を並び替える。

ただし、
要並び替え配列の中身そのものを並び替えるのではなく、
要並び替え配列の各要素が見本配列に存在するか、をチェックしたうえで、
存在していたら、その要素は見本配列内では何番目にあるのか、という情報を取得し、
その情報をもとに、別な配列に要素を入れ直す。

**単純な配列の場合**

“`
$mihon = [“りんご”, “みかん”, ”バナナ”]; // 見本

$temoto = [“バナナ”, “りんご”, “みかん”]; // 要並び替え

$checked_array = []; // 並び替え後に格納する用の配列

foreach($mihon as $key => $fruit){
// 見本配列をループしつつ、要並び替え配列の$key番目の要素が、見本配列内に存在するかチェック
if(in_array($temoto[$key], $miho

元記事を表示

Laravel の FormRequest を全体的に、実態に近く自動テストする

## はじめに

Laravel の FormRequest のテストの話は rules() のテストだけなのが多いので、rules() 以外も含む FormRequest 全体を、より実態に近くテストする話をする

## テスト

以降は次を use する前提

“`php
use App\Http\Requests\HogeRequest;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
“`

全体なので FormRequest の passedValidation() や failedValidation() の実装の影響を受ける
以降はこれらがデフォルトの実装の前提。上書くときはその処理に従う。

### 成功することをテストする

FormRequest がサービスコンテナによる解決によって効果を得ることをテストする

“`php
public function testPass()
{
$attributes = [‘key’ => ‘value’];

元記事を表示

Read DoubleのComposerでLaravelインストールで躓いたところ

#Read DoubleのComposerでLaravelインストールで躓いたところ
プログラミング学習歴1年未満の初心者がLaravelをインストールするまでの道のり。
laravel公式(日本語ver)と言われる[Read Double](https://readouble.com/)だけではわからなかったため途中、調べたところを追加。

##使用環境(動作環境)
* windows10Home(COREi7)
* xampp7.3.18

##Composerシステム全体のvendor/binディレクトリを$PATHへ登録してくださいって何?
**$PATHへ登録する=PATHを通す=環境変数(環境パス)に登録する**
環境パスのことすらわからなかった(多分これまでも環境構築で設定してきたはず)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615830/5d7db8a4-e24d-c317-d6ba-4113a3662def.png)

###PATHを通すとは

>特定のプロ

元記事を表示

【PHP】単数系の英語を複数形に直す

PHPの初学者です。

作ったコードをQiitaに書く様にしていきたいと思います。

・末尾がs, sh, ch, o, x である場合英単語の末尾にesを付ける
・末尾がf, fe のいずれかである英単語の末尾の f, fe を除き、末尾に ves を付ける
・末尾の1文字がyで、末尾から2文字目がa, i, u, e, oのいずれでもない英単語の末尾の y を除き、末尾に ies を付ける
・上4つに当てはまらないものにはsを付ける

“` ‘children’,
‘crux’ => ‘cruces’,
‘foot’ => ‘feet’,
‘knife’ => ‘knives’,
‘leaf’ => ‘leaves’,
‘louse’ => ‘li

元記事を表示

ffmpegで動画を連結する備忘録

PHPから実行した際の備忘録。
連結する全動画の画角、コーデックが同じであること。

“`text:file_list.txt
file ‘/var/***/1.mp4’
file ‘/var/***/2.mp4’
file ‘/var/***/3.mp4’
file ‘/var/***/4.mp4’
file ‘/var/***/5.mp4’
“`

“`php
# 動作確認済み
$cmd = “ffmpeg -f concat -safe 0 -i {file_list_path} -c copy {output_local_path}.mp4”;
system($cmd);

# こっちは未テスト
$cmd = “ffmpeg -f concat -safe 0 -i {file_list_path} -c:v copy c:a copy {output_local_path}.mp4”;
system($cmd);
“`

* -f concat
* 連結指示
* -safe 0
* file_list.txt 内でファイルパスを絶対パスで指定する際に必

元記事を表示

Laravel 6 画像のアップロード

#環境
・Laravel 6.18.43
・PHP 7.3.11
・ブラウザ:クローム

#画面構成

##フォーム
ファイルと商品名を入力します。

|![スクリーンショット 2020-11-20 14.07.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620908/f293d1ec-514a-77c8-067d-1d72eb0d97e9.png)
|:-:|

##確認画面
確認画面を表示します。
input->confirmの際に一度Storage/app/public内のtempディレクトリに仮保存し、
confirm->completeの際にStorage/app/public内のproductImageディレクトリに移動します。

|![スクリーンショット 2020-11-20 14.17.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620908/2dc122cb-5639-fa1

元記事を表示

laravel/ui ログイン後のリダイレクト先変更方法

特に解説はありません。

app/Providers/RouteServiceProvider.phpを開き

HOMEプロパティに格納している値を変更

“`php:RouteServiceProvider.php
…..
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator’s root namespace.
*
* @var string
*/
protected $namespace = ‘App\Http\Controllers’;

/**
* The path to the “home” route for your application.
*
* @var string
*

元記事を表示

Local by flywheel で、admin押したらThis site can’t be reachedが出る。

現在存在するwordpressのローカル環境構築方法で一番簡単なのは、Local by flywheelだと思うのですが、手持ちのMac(OS 10.13.6)だと、This site can’t be reachedというエラーが出てしまって、管理画面にもサイト画面にもアクセス不可の状態でした。

Local by flywheelはまだ新しいからか、ネット上にある解決方法も少なめ。

検索能力が低めなので、ググってもしても、Local by flywheelのおすすめ記事にしか到達できず、質問コミュニティでヘルプを求めたところ、etc/hostsファイルをチェックしろとの助言をいただいた。

# やった事① etc/hosts を確認

って思ったので、とりあえずそのままにググる。
「ホスト名とIPアドレスを対応させるためのファイル」らしい。

Macの場合はterminalを開いて、以下コマンドを実行すれば中身が見れる

`$cat /private/etc/hosts`

その中に以下のようなLocal by Flywheelの表記があればhosts の更新はできているらしい。

元記事を表示

Laravel8 CRUD処理を使った投稿アプリを作成する その10 URLをリンク化する

# 目的

– 投稿内容の文字列中にURLがあったときにリンク化する方法をまとめる

# 実施環境

– 筆者の実施環境を記載する。
– ハードウェア環境

| 項目 | 情報 |
| — | — |
| 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をインストールする]() |
| Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→[Ma

元記事を表示

ほぼ未経験Webエンジニアが入社半年でしたことまとめ(2020/11)

#言語

・PHP
・HTML
・JavaScript
(・MySQL)

#やったこと

・Web開発用の開発環境構築(XAMPP設定など)(なんだかんだ3,4回した気がする)
・変数や配列など基礎的な内容を理解
・Ajax勉強
・オブジェクト指向の勉強
・セキュリティ少し学んだ
・DBについて少し学んだ
・より良いコードが書けるようにリーダブルコードを読んだ
・リーダブルコードを英語で読みたいと思い、原書を購入(まだ読んでない…)
・mapboxのチュートリアル的なページを確認
・HTMLとJavaScriptにmapboxAPIを組み合わせて、マップ情報を活用したHTMLファイル作成(指定場所の面積計算など)
・エンジニア数十人が書いたエッセイ集みたいな本を買って読んだ
・メルカリ創業の本を読んだ(サクセスストーリー感があって非常に面白かった)
・kotlinとswiftをすこし内容みてみた
・UdemyでswiftとJavaScriptのコース(英語)を受講(現在進行中)

#感想
・幅広く興味を持っていい経験ができた気がする
・mapboxに触れられたのはよかった
・Udem

元記事を表示

composer requireがメモリ不足で失敗しないために

## この記事の目的

パッケージ間の依存関係の解消に
メモリを多く消費するパッケージ ( 筆者が遭遇するケース:[Larastan](https://github.com/nunomaduro/larastan) ) を、

デフォルトの設定 ( 通常使用時には上限128MB[php.ini],
Composer使用時には上限1.5GBまで拡張される ) のまま、

インストール(composer require)を試みると、
次のように標準エラー出力されます。

“`sh
Fatal error: Allowed memory size of 1610612736 bytes exhausted
(tried to allocate 4096 bytes)

Check https://getcomposer.org/doc/articles/
troubleshooting.md#memory-limit-errors
for more info on how to handle out of memory errors
“`

エラー文に書いてある[Composer公

元記事を表示

[Laravel] コードをコミット時に自動整形する

#やりたいこと
複数人で開発時に、フォーマットを統一したい。
自動整形するやつ入れても実行し忘れるので、コミットのタイミングで何も考えることなく整形できるようにしたい。

#やりかた

`brainmaestro/composer-git-hooks`というパッケージを使うと、git hook(`gitの特定タイミングで色々できる`)を簡単に使える

そして`friendsofphp/php-cs-fixer`を使うと、コードの規約違反を指摘/修正してくれる

まずはインストール

“`bash
composer require –dev brainmaestro/composer-git-hooks
composer require –dev friendsofphp/php-cs-fixer
“`

つぎに設定
`composer.json`の`extra`に`”hooks”`を追加
`pre-commit`をフックに、`php-cs-fixer`を使って自動フォーマットする。

“`composer.json
“extra”: {
“laravel”:

元記事を表示

OTHERカテゴリの最新記事