PHP関連のことを調べてみた2023年04月07日

PHP関連のことを調べてみた2023年04月07日
目次

【CakePHP3】データベースの削除、参照【新人がyoutube動画でPHP学習part4】

# 1.はじめに

今回はデータベースの基本操作であるCRUDのうち、Deleteにあたる削除、Readにあたる読み出し(参照)を行います。
教材はチャンスラボ株式会社の公式YouTubeチャンネル。
https://www.youtube.com/@asterisk_cl_lab/videos

第8回~第9回の動画を参考にします。

【第8回 データ削除してみよう!】

【第9回 データ参照してみよう!】

# 2.目次

1.はじめに
2.目次
3.データ削除してみよう!
4.データ参照してみよう!
5.終わりに

# 3.【第8回 データ削除してみよう!】
CRUDのD=Deleteについて、データ削除を行いながら解説しています。

**2:20~3:27**
物理削除と論理削除について解説しています。

〇物理削除・・・DBからデータを完全に削除する。
〇論理削除・・・データが削除されたような

元記事を表示

【PHP入門】配列の値を検索するarray_searchと他4つの関数

PHPでは、配列の値を検索するさまざまな方法があるのをご存知ですか?

#目次
[1.はじめに](#1-はじめに)
[2.内容い](#2-内容い)
[3.内容ろ](#3-内容ろ)
[4.内容は](#4-内容は)
[5.おわりに](#5-おわりに)


#目次
[1.配列の値を検索する方法](# 1-配列の値を検索する方法)
[2.複数の配列の値を検索する方法](#2-複数の値を検索する方法)
[3.多次元配列の値を検索する方法](#3-多次元配列の値を検索する方法)
[4.正規表現を使用して検索する方法](#4-正規表現を使用して検索する方法)
[5.おわりに](#4-おわりに)

などの基本的な内容から、応用的な方法に関しても解説していきます。

最後に関数をまとめた表もあるので、先にどういった関数があるのか知りたい方は、そちらから見てくださいね。

今回はそんな配列の値を検索する方法について、わかりやすく解説します!

#1. はじめに
#2. 内容い
#3. 内容ろ
#4. 内容は
#5. おわりに

#1. 配列の値を検索

元記事を表示

PHP8.2.0にて、スプレッドシートの読み込みと書き込み時のエラー解決方法

PHP8.2.0を使用してスプレッドシートの読み込み、書き込みを行う方法
何かの手順通りにやってみたところエラーが出て困ったので、解決方法を残しておきます

# 実行環境
windows10のxamppのlocalhost内に配置したphpファイルを、コマンドプロンプトから実行

![php6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187537/3a0ad958-eb3b-4ff7-1201-f553e8cd0f13.png)

# 読み込み、書き込みに使用した実際のソースコード
“`php

require_once __DIR__ . ‘/vendor/autoload.php’;

$key = __DIR__ . ‘/API_KEY/independent-bay-xxxxxxxxxxx自分のファイルパスに書き換えてください。私はAPI_KEYフォルダの中に入れたので、こういうパスになっていますxxxxxxxxxxxxx.json’;//取得したサービスキーのパスを指定

$cl

元記事を表示

現場で詰まりまくった “Serialization of ‘Closure’ is not allowed” エラー

## 冒頭に
すみません完全にネタ記事(自分としては結構勉強になった)なので、悪しからず・・・

## ある日突然ページ遷移時にエラー
ある日、いつものようにVagrantを立ち上げて仮想環境で作業をしていたら、
“`
“Serialization of ‘Closure’ is not allowed”
“`
というエラーが発生。

!?

と思いつつも、一旦LaravelのStorageにあるSession情報をクリアして再度作業に戻るも、

また同じエラーが出てくる。。。

んん〜〜〜

半日かけてログやデバッグをした結果

「ん!? Redirect::withInput()のところでエラーが出ているぞ!」 と判明。

だが解決方法がエラー文を調べても全くわからず。。。

というより、他の開発者で同様のエラーが出ていないため、とても不可解な現象だ。。。

と半ば感心さえしていました。

…とはいえこれでは作業が進まないため、

LaravelのRedirect内部を見てみることに。

## エラー原因

なんと、Redirect::withInput()が wihtIn

元記事を表示

【CakePHP3】データベースの新規登録、編集【新人がyoutube動画でPHP学習part3】

# 1.はじめに
今回はデータベースの基本操作であるCRUDのうち、Createにあたる新規登録、Updateにあたる更新を行います。
教材はチャンスラボ株式会社の公式YouTubeチャンネル。
https://www.youtube.com/@asterisk_cl_lab/videos

第6回~第7回の動画を参考にします。

【第6回 新規登録してみよう!】

【第7回 データ編集してみよう!】

# 2.目次
1.はじめに
2.目次
3.新規登録してみよう!
4.データ編集してみよう!
5.おわりに

# 3.【第6回 新規登録してみよう!】
CRUDのC=Createについて、新規登録を行いながら解説しています。

**1:52~2:15**
URLに記載されるコントローラー名とアクション名についての説明です。
例えば[http://localhost/users/index]というURLであれば

元記事を表示

お母さんでもわかるDockerを使ったPHPの環境構築


「Dockerfile」の作成。

下記はDockerHubからコピー。
“`
FROM php:8.1.12-apache
COPY src/ /var/www/html/
“`
ターミナルで下記を実装
`docker build -t study-php .`
`docker run -p 8080:80 -d -v “$(pwd)”/src:/var/www/html –name study_php study-php`

元記事を表示

【Laravel】外部APIで発生したエラーをそのままエラーレスポンスとして返す方法

#### 今回の実行環境

“`
# php -v
PHP 8.1.4
# php artisan -V
Laravel Framework 9.6.0
“`

## 背景
外部のAPIを実行してエラーが発生した際に、404エラーも含めすべて500エラーでレスポンスされ、ログが残ってしまう問題がありました。
そこで外部APIでエラーが発生した場合、そのままのステータスコードでエラーレスポンスを返す方法を調べてみたので紹介します。

## Laravelでのエラーレスポンス
まずLaravelでエラーレスポンスを返す方法として1番は `abort()` ヘルパーを使う方法がスタンダートだと思います。

HTTP例外
https://readouble.com/laravel/9.x/ja/errors.html#http-exceptions

ただこのabort関数、Controller内で使う分には問題ないと思うんですが、ビジネスロジック内で呼び出すのは微妙に使い勝手が悪いです。(メソッド名のニュアンス的にも処理を中断して即時レスポンスを返す的な意味合いが強いため)

今回直

元記事を表示

【Laravel】Role 認可/アクセス制限

環境
Laravel9 Jetstream
Inertia Vue3

# 認可/アクセス制限

ユーザーレベルによって、表示や操作可能な範囲を制限します。

admin 表示・操作できる
user 表示・操作できない

LaravelではGate、Policyで対応
Gate シンプル
Policy 特定のモデル・アクションを認可

※事前にrole列を追記しておく

公式

https://readouble.com/laravel/9.x/ja/authorization.html

# Role 役割振り

1 admin
5 manager
9 user

数字が少ない方が権限が強い。

# Roleの追加

“`php:database/migrations/create_users_table.php
tinyInteger(‘role’) //テーブル内に追記
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2784589/d390f467-2153-7806

元記事を表示

【CakePHP3】データベース接続【新人がyoutube動画でPHP学習part2】

# 1.はじめに

今回はMVCモデルの概要を確認、CakePHPとデータベースの接続を行います。
教材はチャンスラボ株式会社の公式YouTubeチャンネル。
https://www.youtube.com/@asterisk_cl_lab/videos

第4回~第5回の動画を参考にします。

【#4 controllerとViewで画面表示しよう!】

【#5 データベースを作成してCakePHPを接続しよう!】

なお、この動画を視聴する前にPHPの基本的な文法を学習しておきました。

# 2.目次
1.はじめに
2.目次
3.controllerとViewで画面表示しよう!
4.データベースを作成してCakePHPを接続しよう!
5.終わりに

# 3.【第4回 controllerとViewで画面表示しよう!】
**0:35~**
まずMVCモデルについての説明です。IT未経験の僕には馴

元記事を表示

WSL2環境にasdfでPHPとNode.jsをインストールする

– 前回「[WSL2 + VSCodeでRuboCopが動くようにしたかった](https://qiita.com/matntntn/items/883503b22f51d2d0d47b)」でasdf入れたのでPHPも入れておきました
– 備忘録として残します
– インストールしたバージョン
– PHP: 8.2.1
– Node.js: 最新版

## PHPのインストール

1. PHPインストール時にとにかくエラーが出るので先にパッケージをインストールしておく

~~~sh
sudo apt install autoconf bison libcurl4-openssl-dev libgd-dev libonig-dev libpq-dev libreadline-dev libsqlite3-dev libxml2-dev libzip-dev mlocate pkg-config re2c
# mlocateはファイルにインデックス付けるプロセスがあり、/mntを対象外にしないと非常に時間がかかる(Windows側のファイル全てにイン

元記事を表示

GitHub Flow について

# GitHub Flow とは
– チーム開発にて活用する
– バックアップを取りながら開発を進めることができる
– コピー上でコードを追記していく
– コピーを複数人でレビュー
– レビューが完了すればgithub上に反映する
### 言葉のイメージ
– mainブランチ
– 木の幹
– ブランチを作る(= コピーを作ること)
– ブランチ=枝

# 手順
1. ”リモート”mainブランチから”ローカル”mainブランチへpull
1. ブランチを作成
1. 開発 -> commit
1. ローカルブランチからリモートブランチへpush
1. Pull Request
1. マージ or 修正依頼(※再push) 
1. githubdesktop(ローカル)でmainブランチでfetchオリジンし、リモートブランチとの差分をプルオリジンすることで修正が反映される。

### 画像にて
1. ”リモート”mainブランチから”ローカル”mainブランチへpull
1. ブランチを作成
1. new branchを押し、名前を

元記事を表示

Laravel url へルパ関数の意外な落とし穴

# 環境
Laravel Version 8.68.1

# 概要
Laravelでよく使うurlへルパ関数ですが意外な落とし穴を見つけました。

“`php
url(‘/hoge/hoge’);
“`

それは「データベースにURLを登録する際にurlへルパ関数を使うと最悪の場合サイトの信頼性を損ねる可能性がある」ということです。

# どういうことか

下記の例を見てみましょう

“`HogeController.php
App\Models\HogeTable::create([
‘title’ => ‘タイトル’,
‘text’ => ‘テキスト’,
‘link’ => url(‘/hoge/1’),
]);
“`
このサービスが仮に http://example.com というドメインでこのサービスを運営していたとします。
この場合linkカラムには http://example.com/hoge/1 という値が入ります。

しかし、逆

元記事を表示

【お手軽】DockerでFuelPHPを使いたい方へ

# TL;DR
– composerを使います(composer無しの時のverだと若干辛いので)
– お手軽にFuelPHPを弄りたい方向け

# 前置き
– FuelPHPで実装されたソースコードをローカルで動かす機会があった
– DockerでFuelPHPの環境構築をした時の内容をまとめてみた

# ディレクトリ構成

`fuel-app` : アプリケーション
`docker/fuel-app` : buildや起動時に使うファイル
`compose.yaml` : アプリケーションサービスの設定ファイル

“`shell
.
├── docker/
│ └── fuel-app/
│ ├── Dockerfile
│ └── php.ini
├── fuel-app/
└── compose.yaml
“`

## Dockerfile

composerをマルチステージビルドを利用して使えるようにする

“`dockerfile:docker/fuel-app/Dockerfile
FROM php:5.6-alpine

COPY —

元記事を表示

【Wordpress】有料テーマは何回でもインポートしてOKなのか?複数サイトで使い回しして良いのか…

# 概要
* WordPressの有料テーマを使っていて、別のサイトでも同じ有料テーマを使いまわして良いのかと思ってふと調べてみました。

## 結論
* 利用する有料テーマの「利用規約」を読むのが一番です。
* 一般的にWordPressテーマには、GPL(General Public License)というライセンス形態が多く採用されているようです。
* GPLとは?
* 「General Public License」の略で、ソフトウェアに対してのオープンソースライセンスの1つです。GPLライセンスは、ソフトウェアの複製、改変、配布を自由に行うことができるように規定しています。自由ソフトウェアのライセンスの1つで、自由に使い、研究し、配布し、修正することを認めています。
* もし購入したテーマがGPLライセンスの下でリリースされたソフトウェアであれば、何回インストールしても問題ないということになります。
* ただし、それ以外のライセンス形態を採用しているテーマもありますので、ライセンスについては有料テーマのページや利用規約で確認する必要があります。

## 自分が使ってい

元記事を表示

【初心者向け】Wordpressでページによってヘッダーの画像を変える

# はじめに
複数のページで構成されているWordpressサイトで、固定ページやカスタム投稿、カテゴリーやタームの大枠のデザインは一緒だけど「ヘッダーの画像を変える」ことで、閲覧者へ違うページであることをぱっと見で伝えられるというメリットがあります。
テーマファイルの数は出来るだけ少なめに、コードもできるだけシンプルに、でも閲覧者が混乱してしまうようなデザインにならない様にします。

`PHP`ではそれぞれ条件分岐を書きますが、実際に画像をページの種類によって変えるのは、`CSS`で行っていますので簡単に実装が可能です。

# 完成イメージ
完成イメージは以下の画像です。
背景に画像があり、その上にタイトルが表示されているという形です。
画像は、固定ページ、カスタム投稿、カテゴリー、ターム等で変えます。
![header.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004345/9eb11f4d-37bb-c962-dc34-31a7c40c3c2c.jpeg)

# コード
とりあえずコードだけ

元記事を表示

早い!簡単!1分でCloud Runを使ってphpMyAdmin環境構築!【Cloud SQL】

# TL;DR

“`bash
gcloud run deploy phpmyadmin \
–image phpmyadmin \
–region asia-northeast1 \
–allow-unauthenticated \
–port 80 \
–set-env-vars=PMA_ARBITRARY=1
“`

Cloud SQL Proxyを使用する場合

“`bash
gcloud run deploy phpmyadmin \
–image phpmyadmin \
–region asia-northeast1 \
–allow-unauthenticated \
–port 80 \
–add-cloudsql-instances $DEVSHELL_PROJECT_ID:asia-northeast1:mysql \
–set-env-vars=PMA_SOCKET=/cloudsql/$DEVSHELL_PROJECT_ID

元記事を表示

【PHP】強連結成分分解のライブラリ

## はじめに

強連結成分分解のライブラリをPHPで実装しました。機能と実装方法については [AtCoder Library (ACL)](https://atcoder.jp/posts/517) の “scc_graph“ とほとんど同じになっています。強連結成分分解については下記の記事がとてもわかりやすかったです。

https://qiita.com/AkariLuminous/items/a2c789cebdd098dcb503

## 実装

“`PHP:Scc_Graph.php
n = $n;
$this->edges = [];
}

元記事を表示

PHP/LaravelでJSONパーサーAPIを作ってみる。

# はじめに

[naritomo](https://twitter.com/naritomo08)と申します。

本職はインフラエンジニアを行っています。
これまでアプリ領域の技術習得のため、各種言語の開発環境Dockerの構築を行ってきましたが、laravelでのアプリ第一号を作ってみましたので、公開したいと思います。

いろいろアドバイスいただけると嬉しいです。

## 開発概要

以下の仕様とします。

* API稼働フレームワークはPHP/Laravelを使用する。
* API入力は、以下のものを入力する。
– URLにクエリでJSONキーを指定する。(?key=key1)
– POSTボディーにJSONデータを入れる。
* API出力は以下のものとする。
– クエリで指定したJSONキーに対応した値をプレーンテキストで出力する。

## 事前準備

以下の記事を参考にPHP/Laravel開発環境を構築してること。
Laravelサイトを参照できること。
プロジェクトフォルダ(backend)に移動する。

https://qiita.com/naritomo0

元記事を表示

PHPパッケージにバグ発見時の対処

# PHPパッケージにバグ見つけちゃいました…

composerでインストール可能なPHPパッケージを使用していて、
どうも期待通りに動かない箇所がありました。

バグ発見、応急処置、最終的にパッケージ更新までの流れをまとめてみました。

## 期待通りに動かない??
cakephp-swagger-bake
というCakePHPとswaggerの橋渡しするようなパッケージを使用して、
高速にREST API開発&テスト環境(Swagger UI)構築を進めてました。

シンプルなAPIについては、あまり調整はいらないのですが、
複雑なリレーションなどを含むAPIの場合、アノテーションを使って微調整する必要があります。

今回はそのアノテーション処理周りで、OpenAPI仕様からずれた出力がされるケースがあり、
Swagger UI 上で、テストをしようとするとResponsesのExample values が期待通りに
出力されなかったです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

【WordPress】文章(コンテンツ)中のURLを自動的にリンク(aタグ)にしよう!

# TL;DR
“` php
//$strの中のhtmlタグに設定されていないURLをリンク化する関数
function convert_string_url_to_link($str){
$ptn = ‘/([^”])(https?:\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])([^”])/imu’;
$rep = ‘$1$2$3′;
$result = preg_replace($ptn, $rep, $str, -1);
if($result == null) return $str;
return $result;
}
//上記関数をthe_contenのfilterに設定
add_filter(‘the_content’, ‘convert_string_url_to_link’);
“`
特にエラー処理とかはしてないので、必要に応じて編集してください。

# この記事を書いた理由
クライアントさん

元記事を表示

OTHERカテゴリの最新記事