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

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

PHP 入力データから一致した指定値の取り出し複数パターン 連想配列

まだまだPHP勉強し始めです。
題名にある通り配列取り出しの例が何個かできましたので
見直す時用です。
上に感想でその下に該当コード

1,これはarray_searchとarray_columnの組み合わせでpostされたデータと一致させる方法

“`
$data = [
[‘id’ => ‘1’,’pass’ => ‘111’, ‘name’ => ‘山田’],
[‘id’ => ‘2’,’pass’ => ‘2222’, ‘name’ => ‘田中’],
[‘id’ => ‘3’,’pass’ => ‘3333’, ‘name’ => ‘佐藤’],
];

if (isset($_POST[‘id’], $_POST[‘pass’])){
if(empty($_POST[‘id’]) ||empty($_POST[‘pass’])) {
$notice = “値がどれか入ってないよ”;
}elseif (array_search($_POST[‘id’], array_column($data, ‘id’)) &&

元記事を表示

複数プログラミング言語より Factom ブロックチェーンのアクセス

![1*UfR2neXteow2gUQrScP6BQ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473244/e97ab578-ac24-4a8f-8033-f24eb0533b1e.png)
Kompendium LLC は色んなプログラミング言語知識と効果的な Factom のグループです。
グループのいずれかの目標は Factom エコシステムに多くの開発者を引き続け、案内や簡単に
の理解等を申し上げることです。ブロックチェーンには継続的な拡張のシステムがあるのでソ
フトウェア遷移することが大変です。Factom に興味がある開発者ために様々なプログラミン
グ言語でスムーズに扱うクライアントライブラリの収集を提供し、Factom エコシステムの開
発ツールボックスも拡大する。顧客の選択言語に利用できないライブラリは思いとどまらせる
原因です。それを防止するように Factom エコシステムの開発ツーリングの改善を努力してい
ます。

大分のブロックチェーンはスマートコントラクト機能が無いですが

元記事を表示

PHPで初めてのWebアプリケーション開発 DB(MySQL)設定 備忘録6

#前提
PHPを使ったWebアプリケーションの開発知識が必要になったので、開発過程の備忘録、知識のインプット・アウトプットを目的としている。

###環境
macOS Catalina 10.15.3
Laravel 7.10.3
PHP 7.3.11

#備忘録6 目次
####MySQL接続
– MySQLのインストール
– MySQLの認証プラグインの変更
– データベースの作成
– Laravelの.envファイルの修正
– laravelのconfig/databese.phpファイルの修正

####テーブルの作成
– マイグレーションファイルの作成
– シーダーファイルの作成
– マイグレートの実行
– テーブルを画面に表示する

##MySQLに接続
手元にある「Laravel 入門」ではSQLiteの接続方法を紹介しているが、MySQLを利用したかったので、MySQLの接続方法を確認。

###MySQLのインストール
MySQLもHomebrewでインストール。

参考にした記事→[「【Laravel】MySQLの接続方法を徹底解説【コピペでOK】」](https

元記事を表示

RaspberryPi3 でPHPが使えなくなってしまったのでメモ

なぜかラズベリーパイでPHPが急に使えなくなってしまったのでメモ。

# 症状
PHPで構築したページを開いてもソースコードがテキストになって出てきてしまった。
# 環境
* RaspberryPi3
* Apache
* PHP7

# 解決法
ネットで調べたところ同じ症状が出ている人は数人いたが解決法を試してもうまく解決しなかった。
ってことでもし解決しなーいっていう人がいるかもしれないからメモ

“`shell
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo a2enmod php7.0
“`
この3つを実行したあとapacheを再起動!
きっとPHPが動くようになってるはず….
# 参考
https://twitter.com/jun50_scratch/status/1116940314231492608
※参考ってよりこれをQiitaに書いただけ(本人了承済み)

元記事を表示

PHPを使ったファイル操作の基本

簡易まとめ
## 使用した関数

“`:sample
//$file_pathにあるファイルを開く
$open_file = fopen($file_path, ‘r’);
//ポインターの場所を取得
ftell($open_file)
//ポインターある位置の文字を取得する
fgetc($open_file)
//ポインターがある位置からその行の最後までを取得する。また、ポインターが取得したバイト数分移動する
fgets($open_file)
//ポインターの場所をファイルの先頭から指定したバイト数分移動した位置に変更する
fseek($open_file, bytes)
“`

## 例

“`example.txt
1line
2line
3line
4line
5line
“`

“`php:example.php

元記事を表示

laravelでcsvファイルImportするだなも

#csvファイルのインポート
今回はLaravelでのcsvインポート機能を簡単にまとめました。
結構使い回せるので自分のメモとしても。

また、今回は配列に入れて返すだけなので、DBに保存とかする場合はまた別の機会にまとめます。

“`php:CsvService.php
protected static $csv_header = [
‘name’, ‘age’, ‘gender’, ‘height’, ‘weight’
];

private static function validateHeader($header)
{
return $header === self::$csv_header;
}

public static function csvImport($file)
{
$csv_array = [];

$csv = new \SplFileObject($file);
$csv->setFlags(
\SplFileObject::READ_CSV | // CSV 列として

元記事を表示

よく使うartisanコマンドまとめ

##モデルの作成
モデル名の頭文字は**大文字**にする

“`sh
php artisan make:model Models/Test
“`

##マイグレーションの作成

“`sh
php artisan make:migration create_tests_table
“`

####:bell:ルール
– モデル名と同じ名前にする(ただし頭文字は小文字)
– モデル名の複数形にする

###マイグレーションの実行

“`sh
php artisan migrate
“`

##ルートの確認

###1. ターミナルで確認

“`sh
php artisan route:list
“`

###2. テキストファイルで確認
テキストファイルにしたほうがターミナルより見やすいです

“`sh
php artisan route:list > route.text
“`

##コントローラ作成
頭文字は大文字にする

“`sh
php artisan make:controller TestController
“`

##シーダー作成

“`sh
ph

元記事を表示

PHPで学ぶクラスとオブジェクトの理解

##はじめに
オブジェクト指向プログラミングとして、PHPやJava,Ruby,Swiftなどプログラミングを学ぶ上で必要な「クラス」と「インスタンス」の理解をするために自分用に記録します。

##オブジェクトとは

関数や関連している変数をまとめてセットにしたもの。
変数と関数など別々に宣言せずに関連したものをまとめて
管理しやすくしたものがオブジェクト指向です。
(例:スライムAのセットの中にHPやMPを作るイメージ)

オブジェクト指向には「クラス」と「インスタンス」の側面があります。

##クラスとは

「クラス」は、オブジェクトの設計図と言われ、
宣言することで、どんな関数や変数を置くのかを決めて
クラスの内部で宣言をします。
全ての関連する変数や関数は、クラスの宣言のタイミングで決定します。
先ほどのスライムで例えると、クラス内部に$hp;や関数でfunction attack(){…}を宣言します。

宣言方法は、最初に class クラス名 {…}と書き
クラス宣言は、上方に変数、下方に関数を宣言します。

“`test.php

class slime {

元記事を表示

【Laravel】フォームリクエストでバリデーションする

##`やりたいこと`##
– バリデーションする
– フォームリクエストを使い汎用性をあげる

##`前提`##
データベースは作成済み
モデルは作成済み
##`進め方`##
– フォームリクエストを作成する
– コントローラーを作成する
– viewを作成する
– ルートを設定する

フォームリクエストを作成する

コマンドプロンプトで作成するプロジェクトのディレクトリに移動してから

“`php
$ php artisan make:request TestRequest
“`
今回はTestRequestという名前のフォームリクエストクラスを作成。
※クラス名はキャメルケースにする。

“`php:TestRequest.php

元記事を表示

【意見募集】新発想?のフォームのセキュリティについて

Twitterのフォロワーさんと話していて、既にありそうだけど、もしかしたら使えるかもしれないフォームのセキュリティを見つけたので書いておきます。

例えば一般的なログインフォームはこんな感じですね?

“`php:index.php

EOM;
}else{
echo <<< EOM



元記事を表示

PHPで厳密な型チェック「declare」

## declareとは

declareとは、実行エンジンに対して、スクリプトの処理方法を指示するための仕組みです。

## 例

$priceに文字列を代入します。型宣言で引数・戻り値にintを指定しています。

“`php

$price = ‘100’; //文字列を代入

print calc_tax($price);

function calc_tax(int $price): int {
return $price * 0.08;
}
“`

結果は8が返ってきます。文字列が代入されているので、厳密にチェックしたい場合にdeclareを指定します。

“`php
declare(strict_types=1);

$price = ‘100’; //文字列を代入

print calc_tax($price);

function calc_tax(int $price): int {
return $price * 0.08;
}
“`

“Fatal error: Uncaught TypeError: Argument 1 passed to c

元記事を表示

Laravelで入力値エラーチェック(validate)を実装する

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

# エラーチェッククラスの作成
(1) コマンドラインで
`cd sample`
`php artisan make:rule SampleRule`
xdebugの設定をしているとeclipseが実行していいですかというプロンプトを出すのでOKを押します
eclipseプロジェクトを右クリック→リフレッシュ
/sample/app/Rules/SampleRule.phpが現れます

(2) /sample/app/Rules/SampleRule.phpに変数を追加し、コンストラクタ、passesメソッド、messageメソッドを修正します

“`SampleRule.php

元記事を表示

PHPで初めてのWebアプリケーション開発 Bladeで画面表示 備忘録5 

#前提
PHPを使ったWebアプリケーションの開発知識が必要になったので、開発過程の備忘録、知識のインプット・アウトプットを目的としている。

###環境
macOS Catalina 10.15.3
Laravel 7.10.3
PHP 7.3.11

#備忘録5 目次
HTML/CSSで作成した画面をBladeを使って表示
– Bladeを使ってテンプレートを作る
– コントローラーの作成
– 表示

#HTML/CSSで作成した画面をBlade構文を使って表示
###Bladeを使ってテンプレートを作る
Laravelには標準で独自のテンプレートエンジン「Blade」なるものが搭載されている。

Bladeに関して詳しく載っているサイト→[「Laravel 7.x Bladeテンプレート」](https://readouble.com/laravel/7.x/ja/blade.html)

今回はBladeの効率的にレイアウトを作成する機能を使って、テンプレートを作成する。
ディレクトリ resources/views/layouts/nanaita.blade.php

“`

元記事を表示

Composerをローカルに落とす方法

Composerを使いたいディレクトリに移動して以下を実行します。

“`
# binファイルを作成
mkdir bin

# composer-setup.phpをインストール
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”

# binディレクトリの中に、composerファイルを作成
php composer-setup.php –install-d

元記事を表示

よく使うヘルパ関数まとめ

##ヘルパ関数とは
ヘルパ関数とは、PHPとは別でLaravelが用意している便利な関数たちです:blush:

##よく使うヘルパ関数
####1. dd()
PHPでいうvar dump()。
指定された変数の内容を表示し、スクリプトの実行を停止する。

“`php
dd($value);
“`

####2. auth()
ログイン情報の取得、チェックなどを行う。

– ログインユーザー情報取得

“`php
$login_user = auth()->user();
“`

– ログインチェック

“`php
if(auth()->check()) {
//ログインしました
}
“`

####3. env()
.envの中に書かれている文字列(環境変数)を取得する。

**例)**.envに“`DB_CONNECTION=mysql“`と書かれている場合

“`php
$env = env(‘DB_CONNECTION’);
dd($env);
//出力:’mysql’
“`

####4. config()
env()と似ていますが、configデ

元記事を表示

【PHP8.0】なんでもあり型が書けるようになる

ジェネリクスではない…ジェネリクスではないのだよ………

ざっくり言うと[var_dump()](https://www.php.net/manual/ja/function.var-dump)の型引数です。
var_dumpにはプリミティブ値にオブジェクトにリソース型にと、どんな値でも渡すことができるのですが、PHP7.4時点の型システムではvar_dumpの引数の型を表すことができません。
PHP8.0で導入予定の[union型](https://qiita.com/rana_kualu/items/f75e254553157d8eb0b7)を使うと`array|bool|callable|int|float|null|object|resource|string`となるのですが、実は`resource`型はPHP8.0でもまだ使えないので、`mixed`型を完全に再現することはできません。

ということで[Mixed Type v2](https://wiki.php.net/rfc/mixed_type_v2)のRFCが提出されました。
投票は2020/05/21まで、受理には

元記事を表示

【2020年度版】EC-CUBE の開発環境の作り方

[ビルトインウェブサーバーで簡単環境構築](https://qiita.com/nanasess/items/c835e87c0e720c4e391f) や、 [EC-CUBE の開発環境の作り方](https://qiita.com/nanasess/items/7170ab22e81e2e8e7edd)の2020年度版です。

最近、 **[symfony/cli](https://symfony.com/download)** が超絶使えるようになっているのでご紹介したいと思います。

– *一部制約がありますが、 WordPress や Symfony を使用していない EC-CUBE2系でも利用可能です*
– *Symfony3系、4系では `Symfony/WebServer-bundle` で開発用ローカルウェブサーバーを起動していましたが、 Symfony5系では廃止されました*

## symfony/cli とは

– Symfonyプロジェクトを新しく作成したり
– パワフルな開発用ローカルウェブサーバーが利用できたり
– セキュリティチェックができたり

する便

元記事を表示

PHPでWEBサイトの変更を検知してLINEに通知する

先日、Qiitaを物色していたらこんな記事を見つけました。

[【自動化】WEBサイトの変更を検知してLINEに通知する](https://qiita.com/Potewo/items/431cea6b954652adb0b3)

やってみよー。と思いましたが、残念、Pythonにそこまで詳しくないという事実が発覚しました。

ってことで、PHPでやっていきます。

### 0, 前準備

取り合えず、VPSは借りてました。
さて、利用規約はどうかな~。ところがどっこい、弊学のHPには利用規約もプライバシーポリシーもないという。。。

### 1, 簡単に処理の流れを考えていく

crontabで定期的にPHPの処理を実行して変化があればLINEに通知していく。

という極めてシンプルな方法をとりたいと思います。

### 2, コードを書いていく

まず、HPのコードがどのようになっているか見ていかなければなりません。

HPのうち、取得したい部分を抜粋します。

“`HTML

記事一覧

なぜ全て関数ではなく、クラスを使うといいのか?の検証 PHP使用

#なぜ全て関数ではなく、クラスを使うといいのか?の検証 PHP使用
※初投稿です。
※リスクヘッジとして備忘録風を装っています。(自信がない主張をするときにするやつ)
※新米ですので用語の誤認識、説明の間違いなどあります。

ご指導のほどお願いします。

##経緯
この記事はPHPで簡単な登録機能を含んだページを作っている時に浮かんだ疑問がもとになっています。
DBへの接続や住所を都道府県名にちぎる工程をfunctionをつくって行っていました。

そんな時、ふと「PHPってクラス化って概念あるけど、function内に収めて全部関数化してしまえばクラスっていらないんじゃないの?」と頭に浮かびました。
パパっと調べてみると「全てを関数にするとコードが大量になった時に覚えるのが大変」という主張を見かけたのですが、「いや、そんなこと言ったらクラスつくるのだって一緒だわ!」となんでやねんをかましました。

それ以外にもクラス化した方がいい理由を見つけたのですが、どれもこれも眺めてるだけでは腹落ちせず…
クラス化による「`カプセル化`、`継承`、`多様化`」というメリットは知ってはいたのですが

元記事を表示

UbuntuでPHPをインストールできない

## やりたいこと
デフォルトでインストールされているPHPが7.0なので、7.4に上げたい

“`
$ php -v
The program ‘php’ can be found in the following packages:
* php7.0-cli
* hhvm
Ask your administrator to install one of them
“`

## 事象
PHPのパッケージがaptのリストにないためアップデートできない

“`
$ sudo apt -y install php7.4
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package php7.4
E: Couldn’t find any package by glob ‘php7.4’
E: Couldn’t find any package by regex ‘php7.4’
“`

## 解決方法
add-a

元記事を表示

OTHERカテゴリの最新記事