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

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

Composer基礎的な知識

# Composer
忘備録です。
ほぼ、公式からの拝借です。

## composer.json
プロジェクトの依存関係が記述されており、他のメタデータも含まれている場合があります。通常、プロジェクト/ VCSリポジトリの最上位ディレクトリに配置する必要があります。(Packagistに上げなければ、最上位じゃなくても問題はない)

*require*
* 探して依存関係を解決してダウンロード、インストールする
* Composerはこの情報を使用して、 [repositories](https://getcomposer.org/doc/04-schema.md#repositories) キーを使用して登録したパッケージ「リポジトリ」、またはデフォルトのパッケージリポジトリである [Packagist.org](https://packagist.org/) で [適切](https://packagist.org/) なファイルのセットを検索します。上記の例では、composer.jsonファイルに他のリポジトリが登録されていないため 、monolog/monolog

元記事を表示

WooCommerceページデザインをカスタマイズする際のphp構成

[作業環境](#作業環境)
[wordpress設定](#wordpress設定)
[ページ設定](#ページ設定)
[woocommerce設定](#woocommerce設定)
[カスタマイズの準備](#カスタマイズの準備)
[各ページに読み込むphpファイル](#各ページに読み込むphpファイル)
[ショップページ](#ショップページ)
[商品詳細ページ](#商品詳細ページ)
[カテゴリーページ](#カテゴリーページ)
[お買い物カゴページ](#お買い物カゴページ)
[支払いページ](#支払いページ)
[マイアカウントページ(ログイン前)](#マイアカウントページ(ログイン前))
[マイアカウントページ-ダッシュボード](#マイアカウントページ-ダッシュボード)
[マイアカウントページ-注文](#マイアカウントページ-注文)
[マイアカウントページ-ダウンロード](#マイアカウントページ-ダウンロード)
[マイアカウントページ-住所](#マイアカウントページ-住所)
[マイアカウントページ-決済](#マイアカウントページ-決済)
[マイアカウントページ-アカウント詳細](#マイアカ

元記事を表示

PHPUnitを使ってみる

# What’s?

PHPUnitを始めてみたい、という記事です。

こちらを読みながら、進めていってみます。

https://phpunit.readthedocs.io/ja/latest/index.html

# 環境

今回の環境は、こちら。

“`shell
$ php –version
PHP 7.4.26 (cli) (built: Nov 18 2021 16:12:41) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

$ composer –version
Composer version 2.1.12 2021-11-09 16:02:04
“`

# プロジェクトを作成する

まずは、プロジェクトを作成します。

“`shell
$ composer init
“`

こんな情報で作成しました。

“`shell
Package name (/) [root/app]: charon

元記事を表示

EmacsでPHP(php-mode+lsp-mode)

Emacsにphp-modeとlsp-modeを導入したい、ということで。

こちらを使ってみます。

https://emacs-lsp.github.io/lsp-mode/page/lsp-intelephense/

利用にあたっては、PHP自体とNode.jsがローカルにインストールされている必要があるみたいです。

php-modeは、MELPAからインストール。

https://github.com/emacs-php/php-mode

lsp-modeそのものは、設定済みとします。

あとは、php-modeのhookにlsp-modeを設定して

“`elisp
(use-package lsp-mode
:ensure t
:commands (lsp lsp-deferred)
:hook (php-mode . lsp-deferred))
“`

PHPのソースコードを開くと、Language Serverをダウンロードするか聞かれます。

補完候補は一択で、`iph`とするとPHPのLanguage Serverがダウンロードされます。

元記事を表示

PHPのパッケージ管理ツールComposeをDockerで使う

# What’s?

PHPのパッケージ管理ツールとしてComposerというものがあるようなのですが。

https://getcomposer.org/

Composerの要求事項として、PHP自体があります。

> Composer requires PHP 5.3.2+ to run.

[Getting Started / System Requirements](https://getcomposer.org/doc/00-intro.md#system-requirements)

できればPHPはDockerコンテナで使いたいので、ComposerのためにPHPをインストールするのも…と見ていたらDockerイメージがあったのでこちらを使うことにしました。

[Composer](https://hub.docker.com/_/composer)

# 環境

今回の環境は、こちら。

“`shell
$ docker version
Client: Docker Engine – Community
Version: 20.10.11
A

元記事を表示

Apache、PHP-FPMのオフィシャルDockerイメージを使ってPHPの環境を作る

# What’s?

ApacheおよびPHP(PHP-FPM)のオフィシャルDockerイメージを使って、PHPの環境を作ってみようということで。

– [Apache(httpd)](https://hub.docker.com/_/httpd)
– [PHP(php)](https://hub.docker.com/_/php)

# 環境と前提

今回の環境。

Docker。

“`shell
$ docker version
Client: Docker Engine – Community
Version: 20.10.11
API version: 1.41
Go version: go1.16.9
Git commit: dea9396
Built: Thu Nov 18 00:37:06 2021
OS/Arch: linux/amd64
Context: default
Experimental: true

Se

元記事を表示

【備忘録】【Laravel8】フォームに入力 〜 Requestで受け取って表示させるまで

Laravelを1から学習しており、自分のための備忘録です。
間違っている点がありましたらご指摘いただけますと幸いです。
※掲示板を作っていると仮定して記事を投稿しています。

# 入力フォームを作る

まず、入力フォームを作ってみます。
/bbs でアクセスできるように、routes/web.phpの一番下に下記を追記します。

“`php:routes/web.php
Route::get(‘/bbs’, ‘BbsController@index’);
“`

/bbs にアクセスが来た場合にBbsControllerのindex関数を参照します。

次に、その参照先である、BbsControllerを作っていきます。
app/Http/Controllers/BbsController.phpというファイルを作成してください。

中身は以下のようにします。

“`BbsController.php

元記事を表示

【備忘録】foreachの基本的な使い方

Laravelを1から勉強しており、foreachの基本的な使い方を忘れないために備忘録です。
間違っていることがありましたらご指摘ください。
画像のような本を管理するアプリに例えて考えていきます。

![スクリーンショット 2021-11-21 23.07.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/985164/f37b2f60-de36-8d97-1289-69b4545337c8.png)

### booksテーブルには以下のようなカラムが作成されていることとします。

“`php:booksテーブルにあるカラムの一部抜粋
id
book_name
created_at
“`

### bookコントローラーには以下のようにindex関数が定義されていることとします。

“`php:BookController
class BookController extends Controller
{
public function index()
{
// DBより

元記事を表示

【備忘録】【Laravel8】controllerからbladeに変数を渡して表示させる

Controllerのファンクションで定義した変数を、bladeに渡して表示させる方法を
自分用に残しておきます。

# Controller

“`php:
public function index ()
{
$test1 = “テスト”;
$sample = “サンプル”;

return view(‘index’, [
‘test_blade’ => $test,
‘sample_blade’ => $sample,
]);
}
“`

return viewでbladeに変数を渡します。
第二引数でbladeに渡す変数を指定しています(左辺と右辺がある)。

### 第二引数の左辺

bladeに渡す変数の部分です。
上記の例ではtest_bladeとsample_bladeが当てはまります。

### 第二引数の右辺

関数で定義した変数です。上記の例では$testと$sampleが当てはまります。

# Blade

{{ $変数名 }}と記述します。
この変数名の部分に、controllerで渡した左

元記事を表示

LaravelのmigrateでSQLSTATE[HY000]エラーが発生

##はじめに
「php artisan migrate:refresh」を実行するとエラーが発生しました。作成した時からMigrationファイルはいじっていないのですが、、
(エラー文は長いので略しました。)

“`php:migrationファイル
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class Projects extends Migration
{
public function up()
{
Schema::create(‘Projects’, function (Blueprint $table) {
$table->id();
$table->char(‘name’,20);
$table->timestamps();
});

元記事を表示

dockerでのphp開発環境を構築する

自宅でもphpについて学びたいと思い、ローカルで開発環境を構築しようと思いました。
MAMPでもいいと思いましたが、せっかくなのでdockerで作ってみたいと思います。
開発中に色々詰まってしまったので備忘録がてらの記述です。

手順

1:dockerによる開発環境構築
2:ファイルディレクトリの準備
3:各ファイルの作成
4:コンテナ起動
5:サイトにアクセス

1:dockerによる開発環境構築

Dockerを使用するには「docker for mac」が必要なんですが、導入方法などはすでにQiitaなどで分かりやすく書かれてる方々がたくさんいますので、今回は割愛させていただきます。

今回はDockerで以下のコンテナを使います。
・nginx
・PHP
・MySQL
・PHPMyAdmin

使用するコンテナが複数あるため今回は「docker compose」を使用していきたいと思います。

2:ファイルディレクトリの準備

まずはDockerを起動するための場所を作成します。
ファイル構造は次のようにします。

“`
ph

元記事を表示

PHPのオブジェクトの代入には気をつける

# はじめに
PHPのobjectについての忘備録。

# これはだめ
“`PHP
$a = new stdClass();
$a->name = ‘Yamada’;

$b = $a;
var_dump($a === $b); // bool(true)

$b->name = ‘Sato’;
var_dump($a === $b); // bool(true)

var_dump($a->name) // string(4) ‘Sato’
“`

# 正しい代入の仕方
“`PHP
$a = new stdClass();
$a->name = ‘Yamada’;

$b = clone $a;
var_dump($a === $b); // bool(false) この時点で別のobjectになってる

$b->name = ‘Sato’;
var_dump($a->name) // string(6) “Yamada”
var_dump($b->name) // string(4) “Sato”
“`

# なんで
objectは参照型なので、同じオブジェクト

元記事を表示

[Windows]ロリポップにssh接続してphpファイルを実行するまで

##概要
最近仕事でPHPを触り始め、ようやく理解も始まってきた。
node.js含め、jsばっかり触ってたので、これを気にnodeではさわれなかったレンタルサーバーで遊びたい。
手始めにロリポップで借りてるレンタルサーバーで遊べるか確認することにした。
が、どうもコマンドプロンプトで普通に[ssh]しても接続できない。
ロリポップのssh自体が自己責任やらなんやら、自分の力でやってください。とのことなので、自力で頑張るしかないようだ。

##環境
執筆日・2021/11/20
ロリポップ契約:スタンダードプラン
ssh接続:Putty
FFFTP事前使用

##準備
1. ロリポップ>ユーザー専用ページ>サーバーの管理・設定>SSH
より、SSH機能をONにしておく。
2. サーバー・アカウント・接続ポート・SSHパスワードが現れるので、メモするかウィンドウ開いておく。
3. SSH接続に、今回はPuttyというやつを使ってみた。インストールする。
* 解説分かりやすかった:https://qiita.com/ponsuke0531/items/43491db4e8e8fed

元記事を表示

新・FizzBuzz

##新・FizzBuzz

自分の中で「これは新しいFizzBuzzだ!」と思っただけなので、感じ方に個人差はあると思います。なるほどなっと私は感じたのでこんな書き方もありますよということです。。。

PHP8から導入された[「match式」](https://www.php.net/manual/ja/control-structures.match.php)を使ったFizzBuzzの書き方です。
matchは「値を返せるswitch式」のようなものです。

“`FizzBuzz.php
function FizzBuzz (int $min, int $max) {
foreach(range($min, $max) as $value){
$output = match(true){
$value % 15 === 0 => ‘FizzBuzz’,
$value % 5 === 0 => ‘Buzz’,
$value % 3 === 0 => ‘Fizz’,

元記事を表示

【Docker】php.iniはどこにある?

PHPの環境設定ファイルであるphp.iniの居場所を見失ったので.

#### コンテナ内にあります

Dockerfileの下のようなところに記載されている

“`:Dockerfile
(例)
COPY php.ini /usr/local/etc/php/
“`

###コンテナ内に入って確認

“`
コンテナのnameを確認
$ docker ps
(docker-composeを使っていたら) $ docker-compose ps
“`
コンテナの中に入る

“`
$ docker exec -it コンテナname bash
(docker-composeを使っていたら) $ docker-compose exec -it コンテナname bash
“`

移動して確認

“`
$ cd /usr/local/etc/php/
$ cat php.ini
“`

元記事を表示

macOS Montereyで”zsh: command not found: php”が出る際の対応方法

MacBook Pro M1 Proが手元に届いたので、開発環境を整えてzshでhomebrewインストールも完了。PHP@7.4をインストールしてPATHを通すところでつまづいた。

“`terminal
php -v
“`
をしても

“`terminal
zsh: command not found: php
“`

が表示されてしまう。

“`terminal
brew list | grep php
“`
では問題なくPHP@7.4が表示されるのでおかしい。

結論、リンクが必要だった。

macOS MontereyのPHPインストール手順としては、

“`terminal
brew install php@7.4
“`

“`terminal
brew link –overwrite –force php@7.4
“`

するとそこに表示される

“`terminal
echo ‘export PATH=”/opt/homebrew/opt/php@7.4/bin:$PATH”‘ >> ~/.zshrc
echo ‘export PATH=”

元記事を表示

Dockerを用いてNginxをWebサーバーとし、PHP(Laravel)、DBはPostgresSQLの開発環境を作成する。

#目的#
ローカルでのLaravelの開発環境を作ってみたいので、Dockerを用いてNginxをWebサーバーとし、PHP(Laravel)、DBはPostgresSQLでローカルの開発環境を作成したいと思います。

選定理由はそれぞれ以下の通りです。
Docker → ローカルの環境への影響をなるべく少なく開発環境を作りたい、および新しい技術の習得
Nginx → 使用したことがないので、使用してみたい。
PHP → 一般的なWeb用のプログラミング言語だと思うので、使用してみたい。
Laravel → MVCモデルのフレームワークを使用してみたい。
PostgresSQL → 最終的にHerokuへのデプロイを考えており、HerokuにおいてはデフォルトのDBであることと、使用したことがないので使用してみたい。

#事前準備#
https://qiita.com/roughstorm/items/6a4fec7c99f7c8dec7a4

#参考#

https://www.membersedge.co.jp/blog/laravel-development-environme

元記事を表示

Laravel6で自動処理(タスクスケジュール)を実装する

Laravel案件を担当している時に、サーバー側で定期的に自動処理をしてほしいというバッチ処理的な依頼がありました
その時に使ったタスクスケジュールと機能が便利だったので、実装の流れを備忘録として記事にしてみました

# 環境

– Laravel 6.20.34
– Ubuntu 20.04.2 LTS(homestead)

# どうやって実装するか

cronを簡単に利用することのできるLaravelのタスクスケジュールという機能を使うことで実装が可能です

# この記事で実装するもの

この記事ではLaravelタスクスケジュールの使い方を理解するために、storage配下のlogファイルへ現在日時を5分毎に残す処理を実装してみます

# 仮想環境へログイン

今回はhomesteadでLaravelの環境構築をしているので、仮想環境へログインしておきます

“`
vagrant ssh
“`

#crontabへエントリー追加

Laravelではcrontab(crontable)のエントリーがひとつだけで完結します
各タスクのスケジュール設定はLaravelフ

元記事を表示

WindowsでマルチPHPをもっと楽に実現する

[windowsでマルチPHPを実現する](https://qiita.com/marveloussound/items/4cccc17edcaad7855940)という記事を見かけたのですが、ジャンクションを使ったほうがもっと楽なのでやり方を紹介します。

シンボリックリンクでもいいんだけど何故か管理者権限が必要だし、今回の用途であればジャンクションで十分です。
なおショートカットでは駄目です。

# PHPをインストール

[PHP For Windows](https://windows.php.net/download)から適当にファイルをダウンロードして、適当にディレクトリに展開します。
今回はとりあえず
`C:\xampp\php7.4.26`
`C:\xampp\php8.0.13`
ってかんじに配置しました。

なんで`xampp`なのかって?
そりゃ[XAMPP](https://www.apachefriends.org/jp/index.html)を使ってるからに決まってる。

# エイリアスを設定

参考記事に合わせて記述すると、こんなかんじになるでしょうか

元記事を表示

【PHP】xDebug.soの読み込みエラーが発生した時の対処法

AWSのCloud9でPHPファイルを実行したときにxDebug.soの読み込みエラーが発生した時の対処法。

PHPのバージョンとxdebugが揃っていない場合などに生じるエラー。

## エラー文

“`
Failed loading /xxxxx/xxxxx/xxxxx/xdebug.so:
/xxxxx/xxxxx/xxxxx/xdebug.so: undefined symbol: gc_globals
“`
xxxxxの部分は`xDebug.so`があるパスです。

## 解決方法

`xdebug`を削除してインストールし直せばエラーが解決されます。

“`
sudo pecl uninstall xdebug
sudo pecl install xdebug
“`

## 参考

https://error-search.com/error-post/detail/168/Failed%2Bloading%2B%252Fusr%252Flib64%252Fphp%252Fmodules%252Fxdebug.so%253A%2B%2B%252Fusr%252

元記事を表示

OTHERカテゴリの最新記事