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

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

【PHP】PHPでメソッドチェーンを実装する

# はじめに
Laravelとかクエリビルダを使っていると、以下ようなのコードをよく見かけると思います。

“`php
$user = DB::table(‘users’)
->where(‘name’, ‘John’)
->first();
“`

こちらのコード、大変読みやすくないですか??
“users“テーブルの“name“が“John“のレコードの1つを所得するというのが、直感で理解できます。
「呼び出し元が見やすいことコードを書くように心がけたい。」そう感じている、Webエンジニア2年生なのです。

# メソッドチェーン
今日は、“->“を使ってメソッドチェーンを実装しようというお話です。

“`php:Calculator.php
class Calculator {

private $result;

public static function create(int $int): Calculator {
return new Calculator($int);

元記事を表示

Guzzle最初の一歩

ただのメモ。最初の最初の一歩を踏み出す

“`php:GuzzleUtil.php
client = new Client([‘base_uri’ => ‘http://httpbin.org’,’timeout’ => 2.0,]);
}

public function retrieveGetResponse(): ResponseInterface
{
return $this->client->get(‘/get’);
}

public function getRespo

元記事を表示

TwitterのAPIで高知県の情報を取得してみた。

###TwitterのAPIで高知県の情報を取得してみた。
#####条件として
・高知県というワードがあるつぶやき。
・いいね、RTが10件以上、ポチられているツイートを拾う。

#####使用したライブラリ
TwitterOAuth

#####phpバージョン
php7.4.x

#####一言
このままの状態ではとても精度の良い高知県の情報を収集することは出来ない!
ので、工夫が必要です。

“`php:common/Twitter_config.php

元記事を表示

【コピペ】Docker ComposeでLaravel開発環境を構築その伍

前回、.envから環境変数を使えるようにして、かなり快適になった。
[【コピペ】Docker ComposeでLaravel開発環境を構築その肆](https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f)

だが、実際にこの環境を使って開発してみると色々と不便だったので修正する。

# マシンスペック
* Mac mini 2018
* macOS Catalina(10.15.x)
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB

# Docker環境
* Nginx 最新版
* PHP(PHP-FPM) 7.4.x
* MySQL 8.x
* Composer 2.x
* Laravel 8.x
* Redis 最新版
* MailHog 最新版

# やること
* 不便なところを改修

# 補足
各環境を行ったり来たりするので、下記のように記載します。

“`
[Mac]$ MacのターミナルでMac内の作業
[PHP]$ MacのターミナルからPHPコンテナに接続して作業

元記事を表示

テーブルの作成 CREATE TABLE文

データベースの作成、テーブルの作成や登録は、SQLを使用してMySQLに命令する。

★テーブルの作成
※なお、ファイルからテーブル作成を行う方法もありファイルから実行できると何度も同じSQL文を毎回自動で実行できる。

CREATE TABLE文で行う。
テーブル名、列名。データ型、制約、テーブルオプションなどを記入。

“`
CREATE TABLE book_logs(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
author VARCHAR(100),
status VARCHAR(10),
score INTEGER,
impressions VARCHAR(1500),
save_day TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) DEFAULT CHARACTER SET=utf8mb4;
“`

★テーブルの削除
DROP TABLE テーブル名;

★MySQLコマ

元記事を表示

PHPで暗号化した情報をGoogle Colab(Python)で復号する

Google Colabでインターネット上にある情報にアクセスできるのは便利だ。個人情報や機密情報をインターネット上に置くのはもってのほかだが、インターネット上に公開して問題ないが第三者に利用されたくないので暗号化しておくといった場合があるかもしれない。(というか、このあたりは自己責任で)

まず、PHPで暗号化して出力する方から。AES256(CBCモード)で暗号化する。

“`php
$message = “Hello”
$plaintext = sprintf(“%s %s”,date(“Y-m-d”),$message);
$cipher = “aes-256-cbc”;
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$key = “12345678901234567890123456789012”;
$ciphertext_raw = openssl_encrypt($plaintext,$cipher,$key,$options=OPENSSL_

元記事を表示

Laravel8 tailwindをsassで使う【備忘録】

***

####1. npmを使ってtailwindのインストール
※確かJetStreamをインストールすると一緒についてくるので不要な場合スキップ
※dockerを使用してる場合は適切なコンテナの中でnpmコマンドを使うこと(ローカルで叩いたり、間違ったコンテナで叩いてハマったので)

“`
$ npm install tailwindcss
“`

***

###2. 設定用ファイルを作成

“`
$ npx tailwind init
“`

プロジェクトのルートディレクトリにtailwind.config.jsが出来上がる

“`tailwind.config.js
const defaultTheme = require(‘tailwindcss/defaultTheme’);

module.exports = {
purge: [
‘./vendor/laravel/jetstream/**/*.blade.php’,
‘./storage/framework/views/*.php’,
‘./r

元記事を表示

【PHP8】プリミティブ型にメソッドを生やそうスカラーオブジェクト

PHPの第一人者Nikitaの[GitHub](https://github.com/nikic)を覗いていたら[なんか面白いもの](https://github.com/nikic/scalar_objects)を見つけました。

わりと前から存在しているみたいで、[最古のコミット](https://github.com/nikic/scalar_objects/commit/92c16762f742bc2a66db3d5bd17aaa63f3464a94)は2013/01/25です。
積極的な機能追加こそほとんどないものの、メンテナンスは続いていて、[PHPに合わせて着実にバージョンアップ](https://github.com/nikic/scalar_objects/commits/master)されています。
2020年11月にもPHP8対応のアプデがされています。

残念ながら[PHPの機能として取り込むつもりはない](https://github.com/nikic/scalar_objects/issues/20)ということで、あくまでエクステンションの立場に留まるよう

元記事を表示

Composer updateでmemory-limit-errorsになる場合の対処方法

## Composer update実行時のmemory-limit-errors対象方法

### エラーの内容

“`
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 134217736 bytes) in /usr/share/php/Composer/DependencyResolver/RuleSet.php on line 84

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 134217736 bytes) in /usr/share/php/Composer/DependencyResolver/RuleSet.php on line 84

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more in

元記事を表示

【Laravel】downメソッドを活用する

## 初めに
初めまして。一月に未経験でエンジニアとして入社しました。ミツキと申します。
今回はLaravelのマイグレーション作成時に使用する`downメソッド`について備忘録として書いていきます。
というのも、今までdownメソッドを活用した事がなく、`$ php artisan migrate:rollback`をした際に、全てリセットされたり、それによって`$ php artisan migrate`を実行する際に「本当にこの設計でいいのか。。。?」などといった不安からマイグレーション作成に関する作業が滞ったりしていました。そんな中会社の上司から「downメソッドを活用したらその不安は解消するよ」とういった助言をいただいたので、今回は実際に検証しながらアウトプットしようと考えた次第です。この記事を読んでの感想などがありましたら、フィードバックをいただけると幸いです。

## downメソッドとは
– テーブル削除の定義を記述するメソッド。
– upメソッドが行った操作を元に戻す。

migrationを実行して、「やっぱ元に戻したい。。。」という場合にロールバックを実行するので

元記事を表示

PHP アクセス修飾子についてまとめてみた。(public, private, protected, static)

# はじめに
**・PHPのアクセス修飾子が
 よくわらない方に、おすすめ。**

## アクセス修飾子
**・メンバ変数やメソッドなどが、
 どこからアクセスできるかを定義**するもの。

## public
・スコープに基づき、
 **どこからもでもアクセス可能**

※アクセス修飾子を指定しない場合は
 自動的にpublicとして扱う。

######サンプルコード
“`php:access-model.php
name = $name; // アクセス可能
}
}
$test = new TestClass(‘テスト’);
echo $test->name; // アクセス可能
// 実行結果: テスト

?>
“`

## private

・スコープに基づ

元記事を表示

PHP学習

# PHPについて
個人的なアウトプットとしての記事です。
私がPHPについて学習したことについて記述していきます。

##PHPとは

### アウトプット
21/02/21
関数
・var_dump()
 引数に指定した変数の型を表示する
 デバッグによく使う

・intval()
 引数に指定した変数を数値に変換する
 同義?に (int)”文字列” がある。こちらも文字列部分を数値に変換する。

・strval()
 引数に指定した変数を文字列に変換する
 同義?に (string)数値 がある。こちらも数値部分を文字列に変換する。

元記事を表示

UbuntuでLaravel8

## AWS EC2にて
Ubuntu 18.04.5 LTS

“`
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
“`

## パッケージ確認
“`
ii php7.2 7.2.24-0ubuntu0.18.04.7 all server-side, HTML-embedded scripting language (metapackage)
ii php7.2-cli 7.2.24-0ubuntu0.18.04.7 amd64 command-line interpreter for the PHP scripting language
ii a

元記事を表示

[php]改行コードを統一する

複数の改行コードが混ざって出力されてしまったファイルの改行コードを統一して出力し直すサンプルコードです。

## 環境
* OS: Amazon Linux2
* PHP: 7.4.14

## プログラム本体
今回は、複数の改行コードが混ざって出力されたtsvファイルの改行コードをLFに統一することに加え、CSVファイルとして出力する、という内容になっています。

“`php:tsvToCsv.php

元記事を表示

Laravel Horizonインストール時のエラー require ext-pcntl *….への対処法

Laravel8 + PHP 7.4.7のdocker環境でHorizonをインストールしようとしたら、以下のようなエラーが出ました。

“`shell
$ composer require laravel/horizon
Using version ^5.7 for laravel/horizon
./composer.json has been updated
Running composer update laravel/horizon
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
– laravel/horizon[v5.7.0, …, 5.x-dev] require ext-pcntl * -> it is missing from your system. Install or

元記事を表示

忙しい人のためのDocker入門

とりあえずDockerって何?と思った人のためのまとめ

# Dockerとは
## 一言でまとめると
ざっくりというと「仮想環境構築のためのツール」。

## Dockerのメリット
1、要するに開発環境の構築&破棄が簡単になる。
2、環境による違いをなくせる。
3、クラスタ構成を作るのも楽。

こちらが詳しかった(https://knowledge.sakura.ad.jp/13265/

> コード化されたファイルを共有することで、どこでも誰でも同じ環境が作れる。
作成した環境を配布しやすい。
スクラップ&ビルドが容易にできる。
例えば、開発環境(Windows上)では動いていたけどLinuxで動かなかった、といったケースも、開発工程からDockerを活用していくことで防ぎやすくなります。そして、開発工程の中で使っていた環境をそのまま本番環境に持っていくことも可能なため、環境差分が少なく、環境による問題を減らすことができます。作成したDockerイメージを他の人にも渡して使ってもらうことで、各自の環境のバージョンずれ防止や、開発環境準備の短縮化にもつながります。開発環境の準備で、

元記事を表示

(Laravel)外部キーを設定するにはデータ型を揃える。

#環境
Windows10
Laravel 8.27.0
XAMPP 8.0.1

#問題
Laravelでテーブルを作成し、外部キーを設定しようとしているのにエラーが発生する。

“`jsx
(“SQLSTATE[HY000]: General error: 1005 Can’t create table `todo`.`folders` (errno: 150 “Foreign key constraint is
incorrectly formed”)
“`

#原因
データ型が適切でないことだった。
外部キーを設定する側 \$table->integer(‘user_id’)->unsigned(); //INT(符号なし)
外部キーの対象側 \$table->id(); //BIGINT(符号なし)

#解決策
外部キーを設定する側 \$table->bigInteger(‘user_id’)->unsigned(); //BIGINT(符号なし)
外部キーの対象側 \$table->id(); //BIGINT(符号なし)

参照先`$table->id()`のとき、

元記事を表示

PHPでEXIF情報をjson_encodeする時の注意メモ

EXIFに含まれるUserCommentなどの文字コードがUTF8でない場合にjson_encodeが失敗してるよう。[EXIF2.3規格](http://www.cipa.jp/std/documents/j/DC-008-2012_J.pdf)をチラ見すると、そんな感じかなと。

PHPのjson_encodeはUTF8以外の場合失敗してfalseが帰ってきてしまうので、json_encodeを使う時は注意しておかないと駄目ですね。

とりあえず位置情報など欲しい情報だけ取得して返そうかな。とりあえずメモ。

元記事を表示

PHP5上級試験/準上級試験の上級合格に挑戦(7) 5章配列前編

# 前回まで

+ 3章文字列・4章関数と、ここまでやってきたがここまでは前菜
+ 4章関数後編は、結局自分でわかっているものはコードを書くのを省いた。時間があれば追加編集する
+ いよいよ5章から難しくなってくるし、出題率もここから上がっていくので兜を締め直してがんばる

# 参考

[PHP5技術者認定試験(上級)に学ぶ、実は知らなかった配列関数(3) | @tmak_tsukamotoさん](https://qiita.com/tmak_tsukamoto/items/2eb6d10e83b6c00981c9)

# 5章配列

## 配列の基本
※ ここ(上級)まで来た人なら、作り方ぐらいは知ってると思うが、ちゃんとした基本ルールを知って作ってるのと知らないで作ってるのとでは大違いなので、きちんと学ぶこと(自省もこめてここに記す)

+ 配列はキーと値がペアで集まったもの
+ ペアは合わせて要素と呼ぶ
+ 配列作成方法は1)array()構文、(2)角括弧構文の2つ
+ 配列にはインデックス配列と連想配列の2つがある。
+ インデックス配列はキーが0から始まるも

元記事を表示

Laravel5.8 画像アップロード機能を仕組みから理解する

#1.はじめに
ECサイトを開発中に画像アップロード機能について最高に詰まったのでこの記事にまとめます。
誰かのお役に立てたら幸いです。
なお、今回実装したのは
**画像をストレージに保存してDBにその「パス」を保存する方法**です。

対象読者
・画像アップロードに躓いている方
・Laravel初学者

注)
本記事に記載してあるコードは要点部分のみです。
本記事は画像アップロードの仕組みを理解するためのものとお考えください。

環境
・Laravel Framework 5.8.38
・PHP 7.2.34
・mysql Ver 14.14 Distrib 5.7.32
・phpmyadmin

#2.実現したい内容
今回実装したかったのはECサイトにおける**商品登録**の段階で、
①フォームに画像データを添付して送信したい
②送ったデータをDBに保存したい
③保存された画像データをView(商品一覧)に表示させたい
という内容を実装したい。

つまりは
![スクリーンショット 2

元記事を表示

OTHERカテゴリの最新記事