PHP関連のことを調べてみた2022年03月15日

PHP関連のことを調べてみた2022年03月15日
目次

Windows で PHP8+Apache+MySQL+phpMyAdmin の開発環境をXAMPP無しで構築する方法

# 初めに
C直下に置く方法はあってもそれ以外で構築する方法が探してもなかったので掲載。
個人的に開発関係は`C:\Program Files (dev)`というディレクトリに保存していたので、ここに、
`C:\Program Files (dev)\Apache`
`C:\Program Files (dev)\php`
みたいな感じで配置する。
各ソフトの設定もそのディレクトリに合わせて変更する。

# PHP8
概要は、PHPをダウンロードしてパスを通すだけの簡単なお仕事です。
### 1. Download PHP

https://www.php.net/downloads.php

ここにPHPのダウンロード一覧があるので、`Current Stable PHP8.*.* (Changelog)`ってところの、`・Windows downloads` からダウンロードページに飛ぶ。

いろいろあるが、`x64 Thread Safe`の大枠のところから、Zipを選択してダウンロードする。

### 2. 配置
ダウンロードしたファイルを解凍して、任意の場所に配置する。冒頭に

元記事を表示

Laravel 6: composer update したら500エラー

[結論から読みたい人はコチラ](https://qiita.com/chimayu/items/da893e5f5cef1c02fbb1#%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%B3%95)

Laravel 6.x + docker-compose(PHP 7.3 / nginx 1.9 / Redis 5.0) を使用。

既存の設定を何も変えずに `composer update` コマンドを実行してLaravelをバージョンアップしたら、 500エラー(Laravelのエラー画面ではなくブラウザの「このページは動作していません」表示)になりました。

`.env` ファイルは存在し、1年半ほど内容は変わっていません。

dockerの再起動とブラウザでのキャッシュ強制クリア、プロジェクト内のファイル・ディレクトリを全て `chmod -R 777` で権限変更してみたのに加え、念のため下記コマンドも試しました。

“`
php artisan cache:clear
php artisan config:clear
php artisan route:c

元記事を表示

WordPressでサブループをよく使う場面

普段仕事でWordPressを使用するので、サブループをよく使用する場面をメモ。

## トップページでカスタム投稿の記事を3件だけ出力したい

3件じゃなくてもいいのですが…コーポレートサイトではほぼ間違いなくあるんじゃないでしょうか。

例えば「新着情報」として、informationというカスタム投稿を出力したい場合
“`php
$paged,
‘posts_per_page’ => 3,
‘post_type’ => ‘information’
));
if ( $query->have_posts() ):
while ( $query->have_posts() ) : $query->the_post();?>

// ループの内容



“`

ちなみにifとwhileは一緒の

元記事を表示

TinyMCEにPDFアップロード機能を実装する方法

# デモ

See the Pen
TinyMCE PDF File Upload Example
by qwe001 (@qwe001)
on CodePen.

<

元記事を表示

PHP Interface

# オブジェクト インターフェイス
**メソッドの実装を定義せず**に、クラスが実装する必要があるメソッドを指定する。

通常のクラスと同様に定義できるが`class`ではなく`interface`を用いる。

“`php
interface HogeRepository
{
public function create(): Hoge;
public function delete(int $id): bool;
}
“`

# 役割
– 同じインターフェイスを実装していることで、開発者が交換可能な異なるクラスを作成できる。
実装が異なっていても、**インターフェイスを使うコードに変更を加えることなく、実装を交換**することができる。
– メソッドがインターフェイスを満たす引数を受け付け、操作できるようにする。
**中身が何をするのかや、どう実装されているかを気にする必要がない**。

# implements(実装)
インターフェイスを実装するクラスに宣言する。

“`php
class HogeProvider implements HogeReposito

元記事を表示

【3分で終わる】とにかく簡単にphpのフォーマッターを導入する(PHP-CS-Fixer)

## PHP-CS-Fixer

https://github.com/FriendsOfPHP/PHP-CS-Fixer

PSR-1、PSR-2などで定義されているPHPコーディング規約に整形してくれるツールです。

## 一番簡単な方法

ひとまずインストールします。
“`shell
$ composer require –dev friendsofphp/php-cs-fixer
“`

composer.jsonのscriptsに下記を記載します。
(ルールはお好みで)
“`json
{
“scripts”: {
“fixer”: [
“vendor/bin/php-cs-fixer fix src –rules=@Symfony,@PhpCsFixer,@PHP80Migration,declare_strict_types –allow-risky=yes”
],
}
“`

実行すると整形されます。
“`shell
$ composer fixer
> vendor/bin/php-cs-

元記事を表示

Laravelサービスプロバイダ

# 概要
初期起動処理。
サービスコンテナの結合や、イベントリスナ、フィルタ、ルートなどを登録することを一般的に指す。

Laravelの場合、プロバイダクラスは`config/app.php`内の`providers`配列に設定する。

# 記述
– 全てのサービスプロバイダは`ServiceProvider`クラスを拡張する
– `register`と`boot`メソッドを持つ
– `register`メソッドの中では**サービスコンテナへの登録**だけを行わなければならない
– `make:provider`コマンドにより、新しいプロバイダが作成できる

“`
php artisan make:provider HogeServiceProvider
“`

## registerメソッド
**サービスコンテナ**に何かを結合することだけを行う。
Laravelにおけるサービスコンテナとは、クラスの依存関係を管理し、依存注入を実行するツール。

サービスプロバイダ内では`$this->app`を介しコンテナにアクセスできる。

“`php
use App\Services\

元記事を表示

コールバック関数とは【個人的なお勉強アウトプット】

関数に引数として渡される関数
対象の関数のなかで実行してほしい内容を渡すイメージ

# わかりやすい記事
https://wa3.i-3-i.info/word12295.html

元記事を表示

無名関数(クロージャ)とは【個人的なお勉強アウトプット】

関数には名前をつける。
ただ、名前をつけるのもそれなりに面倒、その場限りで使う関数もある。
そんな時は名前をつけなくてもよい。
それが無名関数。

# わかりやすい記事
https://wa3.i-3-i.info/word15754.html

元記事を表示

UploadedFile::fake()->image()を使うとCIでのみエラーが出る

## 問題

GitLab Runnerで`Uploadedfile::fake()->image()`を使ったユニットテストを
走らせると以下のようなエラーが出ました。
(ローカルではエラーなく通っています。)

“`bash
TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, function “imagejpeg” not found or invalid function name
“`

要約すると、以下の通りです。
call_user_func()の第一引数には有効なコールバック関数を渡してください。
“imagejpeg”なんて名前の関数は存在していないか有効ではありません。

この原因の詳しい説明については以下の記事をご覧ください。
Laravelのバージョンアップにて一部メソッドの挙動が変更されたことが原因だそうです。

https://qiita.com/yamotuki/items/b7832973833bcb06c157

## 解決策

解決策は、以下

元記事を表示

【MySQL】UPDATE・DELETE・INSERT実行後に処理件数を取得する方法

UPDATE・DELETE・INSERT実行後に出力される“Query OK, 1 row affected“の件数を取得する方法です。
“`sql
mysql> UPDATE animals SET name = ‘cat’ WHERE name = ‘lion’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
“`

SQLとPHP、2種類の方法を説明します。

# SQLで取得する
“ROW_COUNT()“関数で取得できます。
必ずステートメント(UPDATE、DELETE、INSERTなどの実行単位)の完了直後に実行してください。

## ROW_COUNT()の使い方
“SELECT ROW_COUNT();“を実行します。

“`sql
— UPDATE
mysql> UPDATE animals SET name = ‘dog’ WHERE name = ‘wolf’;
Query OK, 7 rows affected (0.00 sec)

元記事を表示

RHEL 8.5にOSS版httpd 2.4.52をインストールする(番外編-phpを利用する)

# 前回
[RHEL 8.5にOSS版httpd 2.4.52をインストールする(2)](https://qiita.com/hykwrtr/items/5581cab77871807594a5)

# 概要
インストールしたOSS版httpdでphpを動かしたいのでインストール&設定をした
CentOS8からモジュール版phpは使われなくなったようなのでphp-fpmを利用する

# 前提
– RHEL 8.5
– httpd 2.4.52 (ソースからインストール、前回の記事参考)
– php 7.4.28 (remi)

# インストール

“`
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

sudo dnf module reset php
sudo dnf module install p

元記事を表示

Laravel foreach内でループ回数を取得する

# foreach内でループ回数を取得したい
bladeテンプレートのforeachディレクティブ内で、$loop変数にアクセスできる

“`php
@foreach
@if($loop->iteration % 2 == 0)
// 偶数
@else
// 奇数
@endif
@endforeach
“`

## プロパティ
|プロパティ|説明|
|:———|—-|
|$loop->index|現在の反復のインデックス(初期値0)|
|$loop->iteration|現在の反復数(初期値1)|
|$loop->remaining|反復の残数|
|$loop->count|反復している配列の総アイテム数|
|$loop->first|ループの最初の繰り返しか判定|
|$loop->last|ループの最後の繰り返しか判定|
|$loop->even|今回が偶数回目の繰り返しか判定|
|$loop->odd|今回が奇数回目の繰り返しか判定|
|$loop->depth|現在のループのネストレ

元記事を表示

Laravel8以降でModelをjson化するときにaccessorにしてるプロパティを含めたいときの件

## はじめに

LaravelでModelといえばDBと一対一になってることが多いと思うんですが、たまにDBのテーブルのカラムにはないものを出力したいときってありますよね。
例えば住所とか顕著ですかね。

かんたんに一例としてこんな感じの `users` テーブルがあったとします。

|物理名|論理名|型|
|—|—|—|
|id|ID|bigint(auto_increment)|
|name|名前|varchar|
|zip_code|郵便番号|varchar|
|prefecture|県名|varchar|
|city|市町村名|varchar|
|address|番地|varchar|

それに対応する class はこんな感じだったりするわけじゃないですか。

“`php:App/Models/User.php
namespace App\Models;

class User extends Authenticatable
{

}
“`

そこで、住所を全部表示させるときにbladeなんかにこういう書き方するじゃないですか。

“`php

住所:

元記事を表示

PHPでの「include」の使い方

## 「include」の使い方
備忘録のためにメモしてます。

各ファイルで共通化している部分を`base.php`に記載します。
“`php:base.php




<?php echo $title ;?>


“`
タイトル部分に「`$title`」、bodyの中身を「`$content`」とし、呼び出し先の変数に置き換えることも可能。

`index.php`ファイルから`base.php`を読み込みたいときに`include`を使います。

“`php:index.php

元記事を表示

PHP+MySQL 接続・テーブル作成・クエリ実行

# PHP+MySQL 接続・テーブル作成・クエリ実行
備忘録のために、メモしてます。

## MySQLへの接続

“`php:mysqli_connect.php
$link = mysqli_connect($hostname , $username, $password, $databases);
if (!$link) {
echo ‘接続失敗です。’;
return;
}
“`

## テーブル作成

“`php:create_table.php
$query = <<

元記事を表示

【Laravel8】breezeでメール認証を導入する

Laravelには標準で認証の仕組みが複数用意されていますが、公式Docを見るとLaravel初心者の場合Breezeを使ってLaravelの認証に慣れていきましょうという旨が書かれています。

> Laravel Breezeは、Laravelアプリケーションを構築するためのシンプルで最小限の開始点を提供しますが、Jetstreamはより堅牢な機能と、追加のフロントエンドテクノロジースタックで、その機能を強化します。Laravelを初めて使用する場合は、Laravel Jetstreamへ進む前に、Laravel Breezeで勘所を掴むことをおすめします。

https://readouble.com/laravel/8.x/ja/starter-kits.html

というわけで従順にBreezeを導入してみたのですが、メール認証の実装で小一時間ほど詰まったので、備忘録を兼ねて記録に残しておきたいと思います。

## 環境、要件

– Docker
– docker compose
– PHP8.1.1
– Laravel8

※この記事を執筆した2022-03-13時

元記事を表示

PHP + MySQLフルスクラッチでユーザー認証機能を実装する【ログイン・ログアウト編】

ネイティブのPHPとSQLへの理解を深めるため、筋トレログアプリをフルスクラッチで開発してみました。その中でいろいろな学びがありましたが、本稿ではフルスクラッチでのユーザー認証機能の実装方法を解説します。今回は全体の導入とログイン・ログアウト機能を実装するところまで進めます。

# 開発環境
– XAMPP
– バックエンド : PHP7.4
– データベース : MariaDB10.4(タイトルではMySQLとしましたが、実際はMariaDBです。MySQLと挙動に大きな差はないので、これ以降はMySQLで表記を統一します)

※実際のアプリ開発ではフロントエンドにBootstrapを使用しましたが、本稿では解説の簡略化のためにCSSを当てていない状態で解説します。

# ファイル構成

“`
.
├── index.php
├── login.php
├── logout.php
├── sign_up.php
├── my_page.php
├── change_password.php
├── delete.php
├── delete_complete.php
└── c

元記事を表示

phpで擬似データベースを作ろう 改

雑です

最初に

この記事は、語彙力ゴミが書いた記事です。

命の保証はしません。注意ください。

あと思いつきです。

設定がやりやすいので、まあ見てくださいな。

仕組み

▼ 全体図

図はこんな感じです。

ざっくり言うとBasic認証があるフォルダーにデータを保存するだけです。

なのでユーザーはBasic認証のパスワードとIDを知らないと入れないのです。

サーバー一つで済みますね。Yeah!!

プログラムを書いてみよう

DBもどき側のプログラム

Basic認証のプログラムは、@mpyw さんの記事から引用させていただいて

元記事を表示

phpで疑似DBを作ろう

最初に

この記事は、語彙力ゴミが書いた記事です。

命の保証はしません。注意ください。

あと思いつきです。

設定がやりやすいので、まあ見てくださいな。

仕組み

▼ 全体図

図はこんな感じです。

ざっくり言うとBasic認証があるフォルダーにデータを保存するだけです。

なのでユーザーはBasic認証のパスワードとIDを知らないと入れないのです。

サーバー一つで済みますね。Yeah!!

プログラムを書いてみよう

DBもどき側のプログラム

Basic認証のプログラムは、@mpyw さんの記事から引用させていただいております。

元記事を表示

OTHERカテゴリの最新記事