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

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

VSCodeでPHPをローカル実行してみた

ひょんなことからphpコードをいただいたのだが、手元でパッと確認するにはどうしたら良いのかな、と思って調べた。(いつもはDocker使っちゃってる)
なんやアプリダウンロードせぇだの出てきたんだが…なんと、VSCodeの拡張機能で簡単にローカルサーバーを立ち上げられるらしい!
それが一番簡単じゃん!やってみよう!

## 必要なもの
– VSCode
– 動かしたいphpのソース

## 手順
1. VSCodeで`PHP Server`という拡張機能を探してインストールする
2. `index.php`など実行したいファイルを開き、ウィンドウ右上にある青いボタンを押す
3. ブラウザで実行されたphpファイルが開かれる!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490854/b6d344ae-716e-4ea1-e423-f38bed76b595.png)

## 注意
上記手順で実行ボタン押したら`php not found`って怒られた。
その場合、設定で`Phpserv

元記事を表示

IBMi db2へ、PHP ODBCから接続する

### 導入
こんにちは。phpでお仕事してます。
お仕事の傍、php-srcのコントリビュータもしています。

今回、phpの`odbc_connect()`および`odbc_pconnect()`の改修をするにあたり、いろんなODBCドライバの挙動を見る必要が出てきてIBMi db2に初めて触ることになりました。

日本語にしろ英語にしろまとまった情報源がなく、かなり手探りで接続までたどり着いたので、備忘録を兼ねて記事にすることにしました

なお、この記事では

– DBにPUB400のIBMi db2を使用
– phpは8.4(執筆時点のphp-src masterブランチのビルド)、localのdocker ubuntu22.04環境

での操作の備忘録となります(ただし、php-srcのビルドは本記事の趣旨と逸れるので、割愛します)。

### IBMi db2とは
IBMiに搭載されているdb2のことです。IBMiについての説明はwikipedia先生に任せます。

[IBMi(Wikipedia)](https://ja.wikipedia.org/wiki/IBM_i)

元記事を表示

PHP勉強記録(1日目)

1.はじめに

今日から記録として、その日自分がした勉強の記録を残していこうと思います。
途中から始めようと思ったので、初歩からのスタートではないのですが…
現在Udemyの教材などで勉強中!

2.PHPでのDB接続を共通化

“`dbconnect.php

“`
“`index.php

“`
毎回DBの接続の情報を記載するの手間かかるなぁと思っていた時にちょうど教材で解説してくれて助かった。
間違えそうな箇所はなさそうなので、一番最後に付ける;を忘れないように気を付ける。

3.見出し部分を一部だけ表示させる。

“`index.php
[PHP] バージョン比較にはversion_compare()を使おう

## 結論

PHPでバージョン比較をする時は、[version_compare()](https://www.php.net/manual/ja/function.version-compare) を使おう

> version_compare()は、ふたつの “PHP 標準” バージョン 番号文字列を比較します。

## サンプル

### 自前で書く場合

“`php
$app_version = ‘5.3.0’;
if ($app_version >= ‘5.3.0’) {
echo($app_version); // 5.3.0
}
“`

こんなふうに書けば自力でバージョン比較できる
・・・けど、

### こんな時に注意⚠️

プレリリース版の`5.3.0-dev` と、`5.3.0` を比較する場合、結果が異なる

“`php
$app_version = ‘5.3.0-dev’;
if ($app_version >= ‘5.3.0’) {
echo($app_version); // 5.3.0-dev
}
“`

“`php
$app_v

元記事を表示

[PHP] Yiiフレームワークの特徴

# Yiiフレームワークとは

Yiiフレームワークは、PHPで書かれた高性能なWebアプリケーションフレームワークの一つです。特に大規模なWebアプリケーションの開発に適しており、短時間で効率的にアプリケーションを構築することができます。

? ポイント: YiiはPHPで書かれたWebアプリケーションフレームワークです。

## なぜYiiフレームワークが選ばれるのか

1. **高速性**: Yiiは、ページの読み込み速度やデータベースのクエリ速度を最適化するためのツールを多数備えています。

? ポイント: Yiiは高速なページ読み込みを実現します。

2. **拡張性**: Yiiはモジュールやウィジェットといった拡張機能をサポートしており、カスタマイズが容易です。

? ポイント: カスタマイズがしやすいのがYiiの特徴です。

3. **セキュリティ**: SQLインジェクションやクロスサイトスクリプティングなどのWeb攻撃からアプリケーションを守るための機能が組み込まれています。

? ポイント: Yiiはセキュリティ面でも信頼性が高

元記事を表示

PHPでLINEのクローンアプリを作成

メッセージを送受信ができるアプリを作ってみました。

![ezgif.com-video-to-gif (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3353802/d2ba3585-5a12-cf79-04f1-3352280f652e.gif)

# リポジトリをclone

“`bash
git clone https://github.com/gong-cha/line-clone
“`

ソースコード

https://github.com/gong-cha/line-clone

# 実装した機能

– 新規登録
– ログイン
– ログアウト
– アカウント削除
– リアルタイムメッセージ受信
– 画像投稿
– アイコン表示
– 既読機能
– ユーザー一覧に最新のメッセージ表示

# 意識したこと

– プリペアードステートメント
– 飲んす機能
– デザイン

# リアルタイムメッセージの手法の検討

**ブラウザに通知する方法の検討**
– WebSockets

元記事を表示

PHPのコードレビューこんなんやってる(その2)

# 概要
意外とそんなにパターン無いのではと思い、整理と今後の備忘がてら記載してみました。実際にメンバーにしたレビュー内容をもとにしています。今回はこれ。

※写真は全く関係ない

## ちなみに前回はこちら

https://qiita.com/WdknWdkn/items/fa653a1f153a64d92b10

# 前提
以下の内容を踏まえてもらえるとひょっとしたら何かの参考になる度合いが
* PHPです
* 1年目にしたレビューが元になっています

# レビュー内容

* ifの条件文が複雑なので分解して早期return
* ifの条件文とtrue/falseの意味を入れ替えて条件を分解

## ifの条件文が複雑なので早期return

### before
“`PHP
function sample()
{
if ($hogeFlg !== true || !($hugaInfo === ‘xxx’ || $piyoInfo === ‘yyy’ |

元記事を表示

PHP+MySQLでユーザーログインシステムを作成(覚書)

PHPでユーザーログインシステムを作成するための備忘録

データベースにユーザー情報を保存します。
ユーザー名とパスワードを使用し、ログイン認証を行いセッションを使用してログイン状態を管理します。
### データベースのセットアップ

ユーザー情報を保存するテーブルを作成します。
“`sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
“`
### login.php|PHPファイルの作成
ログインページ、ログインフォームの作成をします。
“`php

元記事を表示

Laravel でCSVダウンロードと画面遷移を同時に行う方法

# 結果:セッションに入れる
セッションに入れてblade側でリダイレクト。

#### web.php
“`php
// ダウンロードできるようにルートを書いておきます。
Route::get(‘/download-csv’, [App\Http\Controllers\HomeController::class, ‘downloadCsv’])->name(‘download.csv’);
“`
#### CsvController
“`php
use Illuminate\Support\Facades\Session;

// exportCsv()にCSV出力の処理を書いてます。
$file = $this->exportCsv($request);
// セッションに入れる
Session::flash(‘csv.file’, $file);
“`

#### HomeController
“`php
public function downloadCsv(Request $request)
{
$file = $request->get(‘file’);

元記事を表示

Livewireって結局何なんだ…?

## はじめに

Livewireとは、「 Laravel の快適さをそのままに、動的インターフェイスの構築をシンプルにする Laravel 用のフルスタックフレームワーク 」だそうです。
それって結局何ができるの…..??となってしまったので何ができるのか調べてみました。

## そもそもLivewireとは?

Livewireは、LaravelというPHPフレームワークをベースにした、PHPで書かれた動的なコンポーネントライブラリです。簡単に言えば、JavaScriptをあまり使わずに、リアルタイムで動的なウェブアプリケーションを開発できるツールです。

## Livewireを使うメリットは?

Livewireを使用すると、JavaScriptの知識がない開発者でも、比較的簡単にリアルタイムでのUI更新や動的なウェブアプリケーションの開発が可能です。また、マルチページアプリケーションとしてのアプローチもサポートしており、SEOの最適化やバックエンドのスキルを活かしながら、ユーザー体験を向上させることができます。

## Livewireのできること

* #### リア

元記事を表示

PHP勉強記録(1日目)

1.はじめに

今日から記録として、その日自分がした勉強の記録を残していこうと思います。
途中から始めようと思ったので、初歩からのスタートではないのですが…
現在Udemyの教材などで勉強中!

2.PHPでのDB接続を共通化

“`dbconnect.php

“`
“`index.php

“`
毎回DBの接続の情報を記載するの手間かかるなぁと思っていた時にちょうど教材で解説してくれて助かった。
間違えそうな箇所はなさそうなので、一番最後に付ける;を忘れないように気を付ける。

3.見出し部分を一部だけ表示させる。

“`index.php
WordPress Classic Themeのレイアウトを関数で行う

通常レイアウトが複数あるサイトでは`get_template_part`等で読み込んだテンプレート内にて`is_*`系でレイアウト振り分けを行うと思いますが、
結構な割合で作った本人も仕様を把握できなくなったり、Let’s Repeat Yourselfになりがちだと思います。

そこで、BladeやSmartyの様に呼び出し元で部分的な拡張ができるレイアウト関数(クラス)を作成してみました(BladeやSmartyをインストールすれば早い話ですが…)。

## 関数例

“`php

元記事を表示

Laravelでの期間検索時の期間重複データ取得条件を考えた話

こちらの記事は以下に移動しました。

[https://youta-ms.online/tec/laravel_period_search](https://youta-ms.online/tec/laravel_period_search)

元記事を表示

【PHP】エラー:syntax error, unexpected token “endwhile”, expecting “elseif” or “else” or “endif”

# はじめに
* Udemyで一言掲示板を作成する動画を見ていた時に出たエラー。
* エラーコード : **Fatal error:syntax error, unexpected token “endwhile”, expecting “elseif” or “else” or “endif”**
# 1. 原因
* エラーコードを翻訳すると、「“`予期しないトークン ‘endwhile’ が見つかりました。’elseif’ または ‘else’ または ‘endif’ が期待されています。“`」
* > endifが無いまま、endwhileが先に来てしまったので、階層がちぐはぐになってしまっています。
* 参考文献に記載されていた原因を元に自分の書いたコードを確認したが、if構文に対する「else」も「endif」もちゃんと記述してあった。
* もう一度じっくりコードを観ているとphpの開始タグの違和感に気づいた。
“`php

“`
* 「**

元記事を表示

【初心者】M1 Macを使ってPHPの環境構築をやってみた件(Docker編)

# はじめに

新たにPHPに挑戦する為、まずPHPの開発環境を構築することにしました。
環境構築は時間が空いてしまうと忘れがちなので、アウトプットの意味合いも兼ねて備忘録として残します。

使用しているPCはM1 Macになります。
今回はDocker(クジラのやつ)を用いて作っていきたいと思います。

# 手順

手順は下記の順番で行っていきます。

1.Dockerを起動
2.ファイルの準備
3.各ファイルへのコード入力
4.コンテナを起動
5.接続確認

 

# 1.Dockerを起動

まず、Dockerを使うには、「Docker for Mac」のインストールが必要になります。
Dockerをインストールしたら、起動した状態にしておいてください。

↓このクジラのやつですね。
![PHP2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/e9a26b05-2909-4724-fd69-6d2722c391a5.png)

# 2.ファイルの準備

Dockerを起動する場

元記事を表示

Xserver共有レンタルサーバのSSHで好きなバージョンのPHPを使う

せこい貧乏人なので、相変わらず共有サーバを使ってます

Xserverの共有レンタルサーバはドメインごとにPHPのバージョンを設定できるが、SSHでログインした場合、デフォルトで5系の最新が動くように設定されており、色々と困る。
“`
$ composer upgrade
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Your requirements could not be resolved to an installable set of packages.

Problem 1

元記事を表示

Dockerを使ってAtCoder用のPHPのPHP Unitでテストの自動化とxdebugでデバッグをする環境を構築する

# AtCoder用の環境を構築する記事です。
茶色以上を目指す方向けにテストの自動化とデバッグ環境をローカルにdockerで構築する記事です。エディターはVSCodeを使います。私はmacを使ってます。
とりあえずpaiza等のブラウザの実行環境でAtCoderをやってみたのですがテストの自動化とデバッグができる環境が欲しいと思ってDockerで構築してみました。
LinuxとDockerの基本的な操作方法には触れませんしDockerとDocker composeがインストールしてある前提で書きます。しかし、コマンドはとっても簡単なのでコピペで動くはずです。
一番下にGitHubのリンクも載せてます。
## ファイル構成
“`
┌ .vscode
│ └ launch.json
├PHP
└ docker
├ composer.json
├ docker-compose.yml
└ Dockerfile
├ html
└index.php
└ php.ini
“`
## php.iniを作成する
xdebugの設定が書いてあります。デバッグ用のポート

元記事を表示

php artisan route:list 実行後→Class “PostController” does not exist

## 開発環境

– Mac OS Monterey(バージョン12..2.1)
– MacBook Air (M1)
– composer version 2.0.9
– Laravel Framework 10.10

Todoアプリのバックエンド側を実装中、Laravelでルーティングの設定をしており、ルートの確認をしようと以下を実行

“`php
php artisan route:list
“`

すると…

“`php
Class “PostController” does not exist
“`

とエラー表示が!!!

PostControllerが存在しないと怒られている…が、PostControllerはあるんだけどな〜となりました。

色々調べていると、どうやらver7→ver8で、この辺のルーティングの設定方法が異なっているっぽいことが判明。

いくつかのサイトを参考にしたので、追記しておきます。

## 試したこと

今回試したこととしては、以下になります。

– RouteServiceProvier.phpで名前空間を追記
– アクション構

元記事を表示

【Laravel】ひとまずこの記事でweb.php内の「Route::???」をある程度把握しよう

# はじめに
最近ようやくちゃんとLaravelの学習を始めました。
ルーティング周りがうる覚えなせいで画面表示部分からひたすらつまづいているので
備忘録として「Route::???」の内容をこちらの記事にまとめようと考えました。
ルーティング周りで苦労している方の役に立てれば嬉しいです!

間違いやこういうものもあるよ!というご意見お待ちしております!
どしどし指摘してください!

## 基本的なルーティング
“`php:web.php
Route::get(‘/’, [MainController::class, ‘index’]);
“`
まずは基本的な書き方から。これがあれば最低限の遷移はできるよという書き方です。

ブラウザで「localhost:8080/」にアクセスした場合は、MainControllerのindexメソッドを呼び出します。
そのまま画面表示をしたり、DBからデータを取得して画面に表示させたりなど。

### getメソッドの第一引数
「/」を指定することで、**第二引数で指定したメソッドを呼び出す**ことができる
“`php
‘/’
“`

#

元記事を表示

000webhostで任意のサブドメインを作成

下のURLからしか任意のサブドメインを作れないようです。

https://panel.000webhost.com/onboarding

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/01b840c2-d674-b1f9-23e6-6906cd2942a4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/4d659443-d062-a3ad-b510-b6f244ebce99.png)

以下の画面からは任意のサブドメイン作れません

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/04e2a7e5-b06b-be66-3387-b85e2d751701.png)

![image.png](https://qiita-image-st

元記事を表示

OTHERカテゴリの最新記事