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

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

macOS MontereyでPHPとApache

macOS MontereyではPHPが標準バンドルされなくなってしまいました。
なので、インストール…したところApacheも手入れしなければいけなかったのでメモ書き。

# 1.Homebrewのインストール
まっさらのOSの場合を想定してまずはHomebrewをインストールします。
Homebrewのサイトでインストールするためのコマンドをコピーできます。
“`
$/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

# 2.PHPをインストール
Homebrewのインストールが完了したら、引き続きPHPをインストールします。
入っていない筈ですが、一応PHPのバージョンチェックのコマンド。
“`
$php -v
“`
Command not foundが表示されると思います。
(もし自前で既にPHPを入れていた場合は現行のバージョンが表示されます)

インストールできるphpパッケージを確認します
“`
$brew se

元記事を表示

Laravel キュー

# 概要
通常のWebリクエスト中に実行するのでは時間がかかり過ぎるタスクがある場合、
バックグラウンドで処理したい仕事を**キュー**へ投入する。

(キュー:逐次入出力が繰り返されるデータを一時的に蓄えておくためのデータ構造)

Laravelはそれ用のジョブクラスが作成できる。

# ジョブ作成
全てのキュー用ジョブは `app/Jobs` ディレクトリ配下に配置する。

“`
php artisan make:job HogeProcess
“`

で生成されたクラスは `Iluminate\Contracts\Queue\ShouldQueue` インターフェース を実装する。

# クラス構造
`handle` メソッドのみを持つ。
これはジョブがキューにより処理される際に呼び出される。

`handle`メソッドでは依存関係をタイプヒント(型宣言)できる。

“`php
namespace App\Jobs;

use Illuminate\Contracts\Queue\ShouldQueue;

class HogeProcess implements Shou

元記事を表示

【Laravel】timestamps()とtimestamp()の違い

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## timestamps()
“`created_at“`および“`updated_at“`TIMESTAMPカラムを作成。

“`php
$table->timestamps();
“`

## timestamp()
“`created_at“`および“`updated_at“`**以外**のカラム名でTIMESTAMPカラムを作成したいとき使える。

“`php
$table->timestamp(‘expired_at’);
“`

## よくありそうなミス
この2つの違いを知らずに、下記のようにしていてmigrationできなかったので教訓にしたい。

“`php
$table->timestamps(‘expired_at’);
“`

元記事を表示

PHPの条件分岐(初学者の方向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 条件分岐
これは***もし〜なら〜で処理する***みたいな仮定法みたいなイメージです。
we

元記事を表示

初学者向けにCookieの概念と使い方を説明してみる

#はじめに
本稿は初学者向けにCookieの概念から実際の使い方までを解説した記事になります。

Cookieが何のために存在して、どのように使うのかといったことをざっくり理解して頂ければ幸いです。

実際の使い方だけ学びたい方は、[2 実際のCookieの使用方法](#2-実際のcookieの使用方法)から読んでください。

#目次
[1 Cookieとは](#1-cookieとは)
[1.1 そもそもCookieって何のためにあるの?](#11-そもそもcookieって何のためにあるの)
[1.2 セッションとの違い](#12-セッションとの違い)
[1.2.1 保存先](#121-保存先)
[1.2.2 有効期間](#122-有効期間)

[2 実際のCookieの使用方法](#2-実際のcookieの使用方法)
[2.1 Cookieを保存する](#21-cookieを保存する)
[2.2 Cookieを呼び出す](#22-cookieを呼び出す)
[2.3 設定したCoookieを確認する](#23-設定したcookieを確認する)

#1 Cookieとは
ここでは、そ

元記事を表示

PHPでHTML圧縮 – WordPress対応かも?

### はじめに

WordPressプラグインでHTML圧縮ができるかもしれませんが、
過剰に圧縮するためにうまく動かない場合が存在します。

簡単なコードで HTML圧縮をしてみるのも良いでしょうか

### 先に参考サイトの記載

https://prfac.com/php-minify/

https://manablog.org/php-html-minify/

### 試しに組み込んでみたもの

“`functions.php
function sanitize_output($buffer) {
$search = array(
‘/\s\/\>/s’, // XMLの /> を圧縮
‘/\>[^\S ]+/s’, // タグの後の空白を削除
‘/[^\S ]+\/s’ // コメントを削除
‘/type=\”text\/javascript

元記事を表示

PHPでの配列とハッシュ(連想配列)の書き方(初学者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 配列とは
簡単にいうと***データのかたまり***のことです。
つまり***データをたくさん

元記事を表示

TOAST UI Editor のファイルアップロード機能

# 目次
[1.基本的な流れ](#1-基本的な流れ)
[2.まずはエディターに機能を追加する](#2-まずはエディターに機能を追加する)
[3.実際にアップしてurlを返す処理](#3-実際にアップしてurlを返す処理)

**TOAST UI Editor** というマークダウンエディターでファイルアップロードする方法に苦戦したので、誰かのためになればと思いアウトプット記事を書いてみます。
Laravel + Vue.js を使った開発です!

# 1. 基本的な流れ

今回実装させた TOAST UI Editor でのファイルアップロードは、
**選択した画像をサーバーにアップロードして、返ってきた URL を textarea に表示させるというものです。**
最初の状態だと、下記のように画像の情報がそのまま表示されてしまうため、
アップロードして返ってきたURLを表示できるようにしたいところ。

![スクリーンショット 2022-04-03 16.51.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

CakePHP2で表のカラムの順番を入れ替えるボタンの作り方

## きっかけ
演習でファイルがダウンロードできるサイトを作っていて、そのカテゴリーを管理するサイトで矢印↑↓をクリックすると前後の順番を入れ替えられるようにしたかったです。どのように作ったか記しておきます。

![カテゴリ管理画面イメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1802093/9b0f7363-c92e-5dd8-44c4-65296197cc08.png)

## 手順
1, Controllerに更新するデータのidを渡す
2, 並び替え用の数値を書き換え
3, データベースに書き換えたデータを保存

## データベース
order_numberは表示順を表わします。表示順を入れ替えて更新することで並び替えできるようにします。
| id | category_name | order_number |
|:———–|:————|————:|
| 1 | カテゴリー1 | 1 |
| 2

元記事を表示

PHP + MySQLフルスクラッチでユーザー認証機能を実装する【ユーザー登録削除編】

PHP + MySQLフルスクラッチでのユーザー認証機能の実装方法を解説します。今回は最終章の【ユーザー登録削除編】です。
開発環境、ファイル構成、ER図はこちらからご確認ください。

https://qiita.com/Michi1090/items/67db6a38bb63752237e7

# 要件定義

– ユーザー登録削除は物理削除で対応
– 削除前にパスワードを入力させ、本人確認を行う
– ユーザー登録削除と同時に、削除ユーザーに紐づくトレーニングログもすべて削除
– 削除完了後は、完了画面にリダイレクト

今回は外部キー連携を行うので、もう一度ER図を掲載しておきます。
`weight_logs`テーブルは色々なカラムがありますが、要するに`users`テーブルと外部連携できるキーがあれば、あとは何でも構いません。

![ER図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485055/adb788f4-1c27-ef50-6c03-a2e58e6850ed.jpeg)

#

元記事を表示

登録システム

## 会員登録システムの構成
### データベース
データベースは、『登録した会員情報を保存しておく』という役割があります。

### PHPファイル
必要なPHPファイル(仮)
・dbconnect.php – このファイルでは、PHPからデータベースに接続するための処理を行います。
すべてのファイルで、データベースとの接続処理を記述することは無駄が多いので、1つのファイルにまとめておこう、という発想です。

・entry.php – このファイルでは、登録フォールを作成し、会員情報を実際に入力してもらう画面を作ります。

・check.php – このファイルでは、entry.phpで入力してもらった情報の再確認を行います。
要するに、「メールアドレスとか本当にこれでいいの?」って確認するやつです。

・thank.php – このファイルでは、登録が完了した旨を伝え、ログインページへと促します。

### 全体の流れ

![join_system_architecture-1024×543.png](https://qiita-image-store.s3.ap-northea

元記事を表示

PHPでのログイン機能

## フレームワークを使用すれば簡単に実装できるが…
現在、有名なフレームワークというとLaravelやFuelPHPなどがあります。もしフレームワークを使ってログイン機能を実装する場合、大抵は「(フレームワーク名) ログイン機能」などで検索すればヒットすることでしょう。

### フレームワークのみでは応用が効かない場合がある
実は、フレームワークはあまりにも簡単に機能が実装できるため、いざバグが起きたとしても原因がわからず詰まってしまったり、細かな応用が効かない場合が多いです。内部でどのような処理が行われているのかを把握しないまま簡単に実装ができてしまう、というのが逆にデメリットになります。

## phpのログイン機能実装の流れ
### ユーザーに情報を入力してもらう
ユーザーに情報を入力してもらう為に、htmlで入力フォームを作成し、送信できるようにページを作成する必要があります。

### 入力された情報に対してバリデーションを行う
ここで言うバリデーションというのは、「入力チェック」「書式チェック」のことを指します。例えば、Eメールアドレスであれば、
・アルファベット・

元記事を表示

無料の「最寄り駅検索API」を公開した&30msの高速化手段

最寄りの駅を検索して返却するAPIサービス【NeaREST API】を公開してみたのでご紹介します。
※以前zennに投稿した内容と同じです
– 商用利用無料
– 認証制限なし
– 高速応答
– 最大検索件数20件
## 概要・デモ
以下ページにAPIドキュメントと仕様がありますのでご確認ください。

https://station.ic731.net/docs/near

また、簡単なデモとして今いる位置から最も近い駅を検索するアプリを公開していますのでスマートフォンでお試しください。

https://station.ic731.net/demo/nearest

以下のようなJSONを返却します。

“`json
{
“meta”: {
“status”: “success”
},
“data”: [
{
“station_id”: 9930101,
“station_name”: “都庁前”,
“pref”: “東京都”,

元記事を表示

変数に値が入っているか判定 isset

## 用途
変数に値が入っているかを判定したい時に使う

## 使用方法
“`php:php
if (isset(変数名)) {
// 変数がある場合の処理;
} else {
// 変数がない場合の処理;
}
“`

:::note warn
注意
「変数の値がある場合、且つNULLでない場合」に `TRUE` を返す。
「NULL」または、「値がない場合」は `FALSE` を返す。
:::

元記事を表示

foreachカウンター

## 用途
foreach内で何回ループしたかを数える際に使用する。

## 使用方法
“`php:php
“);
var_dump($counter.”
“);
$counter++; //カウントを1ずつ増やす
};
“`

“`:結果

0








“`

 
 
 
この記事は以下の情報を参考にして執筆しました。
– https://dezanari.com/php-foreach-counter/

元記事を表示

PHPの変数と定数(初心者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 変数とは
変数とは変わる数のことで、***値に名前をつける名札***とイメージしてください。

元記事を表示

Mysql旧pearとPDO利用でテーブルフィールド名取得

oearによるDBのtablesinfoにてフィールド名取得例。
“`
require_once ‘DB.php’;
$dsn = “mysqli://root:password@localhost/db名”;
$options = array(
‘debug’ => 2,
‘portability’ => DB_PORTABILITY_ALL,
);
$db = DB::connect($dsn);
if (DB::isError($db)) {
die($db->getMessage());
}
$db->query(‘SET NAMES utf8’);
$info = $db->tableInfo(‘テーブル名’,0);
//print_r($info);
$i=0;
foreach($info as $key => $value){
//echo $info[$i][len].”
“;
echo $info[$key][name].”
“;
}
“`
PDOによるフィールド名取得。
“`
$mysqli = new mysql

元記事を表示

サクラレンタルサーバーでphpからメールを送信する

# 概要
サクラレンタルサーバーで動かしてるLaravelのフレームワークからメールが送信したくなったのでその時実装したものの紹介

## 方法

Laravelのフレームワークでやるやり方がいくつかあったんですけど、レンタルサーバー側でcomposerのupdateができなくなってしまっていて、それに頼ることができなくなったので素のPHPの書き方をベースに書くことにした。

## 書き方
最終的に書いたコードがこちら

“`php
mb_language(“uni”);
mb_internal_encoding(“UTF-8”);
$to = “送信したいメールアドレス”
$subject = “件名”
$header = “Content-Type:text/plain;charset=UTF-8\r\n”;
$header .= “From: 送信元メールアドレス\r\n”;
$param = “-f 送信元メールアドレス”;
$message = “

元記事を表示

月別記事一覧と、投稿数表示機能

# 目次
[1.月別集計](#1-月別集計)
[2.月別ページ表示](#2-月別ページ表示)

Laravelを使ったブログサイト作成で、月別記事一覧と投稿数を表示させる機能を作ったのでアウトプット記事書いてみます。
***

**↓ 最終目標はこんな感じです**
![スクリーンショット 2022-04-02 17.39.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2077017/bbcd94e8-d3c7-ddd1-ac0c-6fcd635d980a.png)

# 1. 月別集計

流れとしては、公開中の記事から指定した年の記事を取得し、月別取得&投稿数取得。
あとは blade側で @foreach を使って月と投稿数を表示させていく感じです!

**`where(‘is_published’, 1)` を書かないと非公開記事まで表示されてしまうので注意です!**

“`php:PostController.php
public function index(): View

元記事を表示

laravelでyoutubeの料理動画を管理するアプリを作ってみた。

laravelを使ってYoutube上にある料理動画を管理するサービスを作成しました。
Youtubeには様々な料理動画が日々アップされていますが、実際に作ってみてよかったものをストックしたり、
少し自分好みにアレンジした時のメモを残したいと思ったので、当サービスを作ってみました。
セキュリティ面など至らない点が多いとは思いますが、興味があれば使ってみていただけると幸いです。

⇩作成したサービス

http://laravel-cookshelf.com

## 自己紹介
PHPを本格的に学習し始めて3ヶ月目の駆け出しエンジニア。前職はインフラ系で現在Webエンジニアになるため転職活動中です。

## 使用技術

##### フロントエンド

+ Javascript
+ Jquery
+ Bootstrap

##### バックエンド
+ PHP(Laravel8)
+ YoutubeAPI
+ Mysql

##### インフラ
+ AWS
+ Git

認証機能はLaravelにデフォルトで備わっているlaravel-authを使用しました。
また、AWSはEC2でサーバーをた

元記事を表示

OTHERカテゴリの最新記事