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

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

PHPUnitのバージョンアップで使えなくなったgetMock()の置き換え法(草刈り)

# 環境
– php 5.6.21
– phpUnit 5.7.27
– Xdebug 2.4.0

# 前置き
たまたまPHPUnit5.7.27が入っている環境の触れる機会がありました。
この環境でテストを実行すると以下のように大量の警告が出てきて「何事だ!?」となったのが始まりです。
![スクリーンショット 2020-09-02 16.40.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323051/52f06cfd-2210-d943-8c37-69104d008929.png)
↑大量の警告が出て大草原になっています
この警告を消して(草刈りして)いきたいと思います。

# 警告の内容
警告の内容は以下の通りです。

“`terminal
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCa

元記事を表示

PHPでWindows向けのCSVデータをLinuxサーバにて生成する。

手間だった為、関数を用意しておく。

# 生成するCSVデータ

* 文字コード = Shift-JIS
* 改行コード = ¥r¥n
* ¥r = キャリッジ・リターン(carriage return、復帰)
* ¥n = ライン・フィード(line feed、改行)
* 項目を囲む文字 = 「”」(ダブルコーテーション)

# 関数

“`php
/**
* 二次元配列からWindows向けのCSVデータを生成する。
*
* @param array $records
* @param string $delimiter
* @param string $enclosure
* @param string $enclosure_escape
* @param string $line_break
* @param string $from_encoding
* @param string $to_encoding
* @param int $maxmemory
* @return string
*/
function createWinCSV(

元記事を表示

Web系の定番ソフトウェアのバージョンを確認する。

次のコマンドを発行する。

# CentOS
“`bash
cat /etc/redhat-release
“`

# Apache
“`bash
httpd -v
“`

# Java
“`bash
java -version
“`

# Python
“`bash
python –version
python3 –version
“`

# PHP
“`bash
php -v
“`

# WordPress
“`bash
cat wordpress/wp-includes/version.php
# $wp_versionの値を確認する。
“`

# MySQL
“`bash
— MySQL接続後に次のSQL文を発行する。
select version();
“`

# Oracle Database
“`bash
— OracleDB接続後に次のSQL文を発行する。
select * from v$version;
“`

# 備考
本記事はブログ「[雑用エンジニアの技術ノート](https://scrapbox.io/nezuq/)」から

元記事を表示

Laravel8を試したら即効でエラー「Target class [〇〇〇Controller] does not exist.」が表示された

#はじめに
最近になってLaravel8がリリースされたと聞いて、とりあえず動かしてみようと思ったら開始早々にエラーが発生しました。
![laravel8エラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554111/47c2073b-b036-62e3-f8c1-1ecdf1d5e0b4.png)
`web.php`で`PostController`を呼び出す処理を書いたのに上記エラーが発生。Laravel6ではちゃんと呼び出せたのに:joy:
そのときの`web.php`はこちら。

“`php:web.php

元記事を表示

Laravelでneo4jを使う④マイグレーション

#事前準備
・app/database/labelsフォルダの作成

#

$ php artisan neo4j:make:migration create_race_label

$ php artisan neo4j:migrate

| コマンド | 説明 |
|:-:|:-:|
| $label->unique(‘email’) | プロパティに一意の制約を追加する |
| $label->dropUnique(‘email’) | プロパティから一意の制約を削除する |
| $label->index(‘uuid’) | プロパティにインデックスを追加する |
| $label->dropIndex(‘uuid’) | プロパティからインデックスを削除しています |
| | |

コマンド 説明

元記事を表示

PHP・GCの話-5話)GC登場。GC発生条件とROOT BUFFER

## 前書き

– すべての記事は、自分の勉強目的と主観の整理を含めています。あくまで参考レベルで活用してください。もし誤った情報などがあればご意見をいただけるととっても嬉しいです。
– 内容では、省略するか曖昧な説明で、わかりづらいところもあると思います。そこは、連絡いただければ補足などを追加するので、ぜひ負担なくご連絡ください。
– 本文での「GC」は、「Garbage Collection, Garbage Collector」の意味しており、略語として使われています。
– この記事は、連載を前提に構成されています。

**※ 連載目録**
> – [PHP・GCの話-1話)なぜGarbageCollection? メモリとGCを意識する](https://qiita.com/genie-oh/items/e6dfc49fb9899f931271)
> – [PHP・GCの話-2話)変数の管理情報、zval containerとreference count](https://qiita.com/genie-oh/items/3537a91e65c5659c3caa)
> – [

元記事を表示

strlen関数とmb_stlen関数について

今日からPHP学び始めたので初歩的な内容ですがまとめたいと思います。

## strlen関数とは

これはrubyでいうところのstring#lengthメソッドと同じです。

構文はこうです。

“`
strlen ( string $string ) : int

“`

引数の`( string $string )`には文字列が入り`: int`は返り値となってます。

例えばこうです。

“`
strlen(‘abc’) => 3
“`

ただ日本語の場合は違う返り値になります。
例えば、、、

“`
$text = ‘あいうえお’

strlen($text) => 15
“`

なぜ。。。

原因としては日本語のマルチバイトはsjis, utf-8だからです。(現在はほとんどがutf-8みたいです。)

###マルチバイトとは

1バイトで表現できない(2バイト以上で表現する)データのことみたいです。。。

バイトってなんだ。。

###バイトとは

調べたところ、バイトとは、情報量の単位で、8ビットと等しい情

元記事を表示

PHPで文字化けするCSV処理を文字化けしなくする方法

# 結論

[fw3/streams](https://packagist.org/packages/fw3/streams)を`composer require fw3/streams`して、CSVを扱っている処理を次のように囲ってあげれば文字化けしなくなります。

※ PHP7.2.0未満(下限PHP5.3.3)で解決したい場合は[fw3_for_old/streams](https://packagist.org/packages/fw3_for_old/streams)を利用してください。(`composer require fw3_for_old/streams`)
  [fw3/streams](https://packagist.org/packages/fw3/streams)および[fw3_for_old/streams](https://packagist.org/packages/fw3_for_old/streams)共にPHP8.0 beta 2まで動作確認済みのため、PHP7.2.0以上のシステムの場合はどちらを入れても変わりはありません。
※ compos

元記事を表示

【PHP】リンクの?と&

PHPについて学習内容を備忘録としてまとめます。

#リンクの?と&

##パスに?を指定
リンク先のパス名を書くときに値を渡したい時があると思います。
例えば、商品番号であるpro_codeをリンク先に値として渡したいときには?の後に指定します。

“`php
#pro_list.php
#rec[‘code’]は飛ぶ先の商品コードが入っており、今回は1が入っています。
#商品の詳細情報を確認するボタン

商品コード1

↓クリックするとpro_disp.phpに飛ぶ

#pro_disp.php

#実行結果
商品コード:1

“`
このようにパスで指定したpro_codeの値をパス先であるpro_disp.phpに渡しています。

##パスに&を指定
パス先に複数の値を返したいときには&を使います。
下記の例では先ほどに追加でユーザーIDを値として渡す場合の

元記事を表示

※学習用メモ デザインパターン:Template Method編[PHP]

# はじめに
使用している言語はPHPです。(自分が良く使うので)

## Template Methodパターンとはどういうものか
スーパークラスと呼ばれるクラスで処理の大きな枠組みを決め、
サブクラスと呼ばれるクラスで具体的な内容を記述するというデザインパターンのこと。

**似たような処理を共通化させたい**際に用いられることが多い

## Template Methodパターンを用いるメリット/デメリット
* メリット
* スーパークラスに主なロジックが記述されているため、バグが生じた際にスーパークラス内に記述されているTemplateMethodを修正すればよい
* サブクラスの内容が簡潔になる

* デメリット
* サブクラスの数が増加するケースが多い
* 親子関係が密接であるのでスーパークラスのロジックを確認したうえでないと実装することが難しい
* スーパークラスの処理が大きくなると、サブクラスの自由度が小さくなってしまう

## サンプルコード
### 仕様
父親とその子どもの一日の行動(平日)を文字列表示する。(いい例が思いつかなかった)

以下のクラスを用

元記事を表示

Laravel8をインストールしたらやっていること一覧

## まえがき

・ヮ・)あ、おはようございまーす

毎回「この前、最初にどんな設定をしたっけ」と悩んでしまうので**自分がよくやる設定**を備忘録を兼ねてまとめました

Laravel6の設定は[こちら](https://qiita.com/schrosis/items/a41c132ad002a9eebf02)

## `composer create-project` しないでインストールした場合

`composer create-project` してLaravelをインストールすると
`.env.example` をコピーして `.env` を作って、`APP_KEY` の設定もしてくれます

しかし、Laravelのプロジェクトをクローンして `composer install` でインストールした場合は、手動でやる必要があります

“`sh
# .env.exampleをコピーして.envを作成
php -r “copy(‘.env.example’, ‘.env’);”
# APP_KEYの生成
php artisan key:generate
“`

## AP

元記事を表示

「php artisan ui vue –auth」ができなかった時の解決法【メモ】【超初心者】

“`
$ php artisan ui vue –auth
“`
上記を実行しようとしたところ、、、

##エラー内容
「Command “ui” is not defined.」
![スクリーンショット 2020-09-12 16.36.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693622/1b8aaa3c-618e-8a56-4790-b9dc2c4e52a9.png)

##解決した方法

“`
$ composer require laravel/ui “^1.0” –dev
“`
このコマンドを実行してから
またさっきのをやってみたらできました

“`
$ php artisan ui vue –auth
“`

参考にしたサイト https://zukkokeblog.com/laravel6-auth

元記事を表示

PHP の閉じタグは書かないらしい

PHPのみのファイルを書く場合は、閉じタグは書かない方がバグが起きにくいらしいです。
参考→https://www.php.net/manual/ja/language.basic-syntax.phptags.php

htmlに挿入する場合は必要になります。

また、echoの場合も省略する書き方があるようです。

“`example.php


//どちらも同じ動きをする
“`

元記事を表示

PHPのopenssl関数で動的に自己署名クライアント証明書を発行する

# はじめに
今回はPHPのopenssl関数を使ってクライアント証明書を出力する方法をご紹介します。
利用の際は、セキュリティ面についてご自身でも検証、理解の上でご利用ください。

# 検証バージョン
以下の環境で動作確認しました。
OS: CentOS 7.8
PHP: 5.5.38
openssl: 1.0.2k
Apache: 2.4.6
※Windows 10上にVagrantで構築しました

# 前提
事前にApache上にプライベート認証局、クライアント証明書をセットアップしておきます。
以下の記事が非常に参考になりました。
https://qiita.com/mitzi2funk/items/602d9c5377f52cb60e54
上記が完了している前提で以下をご覧ください。

# PHPのopenssl関数について
opensslコマンドをPHPから利用できるようにラップした関数群です。
openssl関数の中でも今回は以下を利用します。
以下がそのまま処理の流れになっています。

## openssl_pkey_new(クライアント証明書用のキーペア作成)
htt

元記事を表示

var_dump()ってなんだっけ

突然出てくるvar_dump()。
出てくるたびにこれなんだっけ…となっていたのでまとめ。

まず…
##演算について

変数($○○と表記される、プログラムで扱うデータを入れておく容器。箱のようなイメージ。)に対して計算したり、内容の加工を行うことを演算という。

演算にも何種類かあって…

“`php

$value = 6;
echo $value + 2;

$value = 6;
echo $value / 2;
“`

このような、加算・減算・乗算・除算・連結は**二項演算**という。

本題のvar_dump()は次に説明する論理演算で使用する。

##論理演算
数値が同じか判定したり、どちらが大きいかを比較するような判定を行う演算子。

ex.

“`php

$value = 10;
$result = $value == 20;
var_sump($result);

$value = 10;
$result = $value < 20; var_sump($result); $value = 10; $result = $value > 20;
var_

元記事を表示

Laravelで`Target class [〇〇Controller] does not exist.`と言われたときに検討してみたい原因

#Target class [〇〇Controller] does not exist.

まだまだPHPどころかプログラミング自体初心者の域を出ていないですが、自分がぶつかったエラーの対処法を記したいと思います。自分は2時間ぐらい解決に費やしてしまったのでそんな自分の二の舞になる人が減ることを願っています笑。

以下のコードの状態の時にエラーにぶつかりました。

“`web.php
Route::get(‘/hello’,’HelloController@index’)
“`

“`HelloController.php
class HelloController extends Controller
{
public function index()
{
$coolString = ‘Hello from Controller.’;

return view(‘subviews/hello’, compact(‘coolString’));
}
}
“`

“`hello.blade.php

{{ $cool

元記事を表示

PHPで日付の範囲を定義して任意の間隔で処理をする

PHPで日付の範囲を定義して1時間毎など任意の間隔で処理をしたい時、例えば2020年1月1日0時0分0秒から2020年1月2日0時0分0秒まで1時間毎にループを回して何か処理をしたい場合の書き方。

## 結論

“`php
add(new DateInterval(‘PT1H’))
);

foreach($date_period as $date) {
echo($date->format(‘Y-m-d H:i:s’) . “\n”);
}
“`

ここから実際に動かせます
http://sandbox.onlinephpfunctions.com/code/6590f911729eb743b45d73dbfafcc3eafd158581

## 解説

## DatePeriod

[Date

元記事を表示

wordpressでよく使うphpのコード

#はじめに

最近wordpressのテーマを作ることが多いのですが、そろそろ頻出するphpのコードを丸暗記したいなと思ってきたのでまとめます。

#スタイルシートの取得
ローカルで書いたりするときはcssの相対パスでリンクさせますが、wordpressの場合はphpでcssを呼び出す必要があるようです。

“`php Docker × Laravel 8 Jetstream でログイン、ユーザー登録、2要素認証を実装する

Laravel Jetstream は Laravel8から使える新しいパッケージで、Laravel7以前で利用されていた [Laravel UI](https://github.com/laravel/ui) の後継パッケージとなります。

– [Jetstream公式ドキュメント](https://jetstream.laravel.com/1.x/introduction.html)

## Laravel Jetstreamの機能

– ログイン機能
– ユーザー登録機能
– メール検証
– 2要素認証
– セッション管理
– [Laravel Sanctum](https://github.com/laravel/sanctum)によるAPIサポート
– チーム管理

上記の機能を提供します。

## Laravel Jetstreamの特徴

JetstreamはTailwind CSSを使用して設計されています。
テンプレートとして、[Livewire](https://jetstream.laravel.com/1.x/stacks/livewire.html)また

元記事を表示

PHP 、Laravel学習 1

これから学習したことをQiitaに投稿していきます。

非常に中途半端なところからのスタートになりますがご容赦下さい。

●Laravel学習

・MVCモデル
①ブラウザから送られてきた指令(リクエスト)をまずroutingが受け取る
②routingがどこにその指令を飛ばすべきかリクエストの種類を判別する
③controllerで受けとった場合、然るべきアクションを行う
④viewで受けとった場合そのままviewを返す(レスポンス)
⑤ブラウザに反映される

※多様なパターンがあり、一概に↑の順とは限らない

routing・・・リクエストを判別し、然るべき場所に信号を送る
controller・・・routingから送られてきたリクエストに大して然るべきアクションをする
view・・・表示するべきUI部分。
Model・・・データベースの前に立ち、操作しやすくするもの(?)

Model、view、controller
3つの要素の頭文字をとってMVCモデル

・データベース基礎
情報を保存しておくところ
Ex.ユーザーの名前、年齢、性別等

まず、データベースを操作する言語(デ

元記事を表示

OTHERカテゴリの最新記事