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

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

PHPフルスクラッチでWebアプリ作成

# はじめに
マイペースに開発を進める予定です。
記事を書き次第、追記予定となります。
また、デザインは全くと言ってもいいほどつけないと思いますので、ご理解いただけると嬉しいです。

# 経緯
気ままにWebアプリをフルスクラッチで実装しようと思ったので始めました。
また、どうせならアウトプットしようと記事にし始めました。
(MarkDownの勉強もできるし…)
# どんなものを作るか
詳しくは決めていないがバイトのシフト管理アプリを作ろうと考えています。
店長が管理者となり、従業員がシフトを提出して店長がシフトを作成する的な…

# 開発環境
* Ubuntu 20.04.3 LTS
* PHP 8.0
* MySQL 8.0
* Git

※今後随時更新予定

# 記事一覧
### COMMING SOON…

元記事を表示

WordPressのphpファイルでfunctions.phpのショートコードを呼び出す方法【自分用メモ】

最近コーディングしているとphpファイル(category.phpやfunctions.php内など)でfunctions.phpにある関数を使いたくなるのでメモ。頻繁に使わないので書き方を忘れる上に検索すると違う記事ばかりでるので・・・

## コード
“`php

“`
引数に固定ページと同じショートコードを入力すれば大丈夫です。

## 参考

WordPressのテーマphpでショートコードを呼び出す方法

元記事を表示

PHPにおけるクラスの使い方

ここでは一般的なクラスやabstract、trait、interfaceなどの使い方をまとめたいと思います。

##classの使い方
クラスは変数・定数やメソッドを一つにまとめたもの。
役割ごとにクラスを作り、そのインスタンスを使ってプログラムを動かすことをオブジェクト指向という。

“`php:class_example.php
class Product{
//公開条件にはpublic、protected、privateがある。
// publicは外から使える→インスタンス後にアクセスできるということ
// protectedは自分と継承先のクラスが使うことができる
// privateはクラス内でしかプロパティやメソッドにアクセスできない→変数などはprivateが安全(外から書き換えられないから)

// 変数
private $product = [];

// 関数
// コンストラクトメソッドはクラスがインスタンス化される際に呼び出される
// $thisはnewによりインスタンス化したオブジェ

元記事を表示

ScratchAPIが便利すぎる件について

# はじめに
皆さ~ん!ScratchAPIって知ってますか?(唐突)

# ScratchAPIとは
普通のAPIって、APIキーとか認証とかが必要になってくるんですよ。
ですが、このScratchAPIは認証いらずで手軽に誰でも使えます!
> ただし、GET系のAPIしか使えません。

# 使ってみよう
ScratchAPIはいくつかURLがあります。
### 素材(画像とかサウンドとか)
~~~
http://assets.scratch.mit.edu/任意
~~~
### ベーシックなAPI
~~~
http://api.scratch.mit.edu/任意
~~~
### プロジェクトの詳細(内容ブロックなど)
~~~
http://projects.scratch.mit.edu/任意
~~~

# 使ってみよう!
実際にPHPで使ってみましょ~ね~

~~~php:main.php

元記事を表示

$ npm run devでコンパイルしようとしたらSintax error

# <エラー概要>
◉LaravelMix学習
表題の通り、上記コマンドでエラー発生

:::note warn
SyntaxError: Identifier ‘mix’ has already been declared
:::

#<仮説>
◉コードを書き換える際に余分なコードを記載してしまった。
◉エラー文よりすでに定義された変数や定数が再定義されている

#<解決方法>
“`webpack.mix.js
const mix = require(‘laravel-mix’);
“`
こちらのコードがなぜか二行書いてしまっており一行削除し解決に至りました。
エラー文の通り、 すでに定義mixという変数が再定義されているということでした。

# <感想>
今回のエラーはエラー分をじっくり読めば解決できるものでした。
引き続き頑張ります!
補足アドバイスがあれば是非お願いいたします。

元記事を表示

localhost:8000に接続できないエラー(404 Not found)

# <エラー概要>
◉Laravel学習
http://localhost:8000/admin/profile/create
に接続を試みるも、

:::note warn
404 Not found
:::
と出力されうまく実行できない。

#<仮説/試したこと>
◉ルーティングの記述確認
“php artisan route:list“
#<原因/結果>
“admin/news/create“
“admin/news/delete“
“admin/news/edit“
→このようにprofileのルーティングが全くできていませんでした、、

“`route/web.php
Route::group([‘prefix’ => ‘admin’], function() {
//ProfileController
Route::get(‘profile/create’, ‘Admin\ProfileController@add’);
Route::get(‘profile/edit’, ‘Admin\ProfileContro

元記事を表示

IntelliJ IDEA / PhpStormとdockerのPHPでブレークポイントを使ってデバッグする方法

xdebug php.iniの設定例。

“`
; 以下の設定だと、IntelliJのRUNではxdebug.modeの設定が無しで実行されるのでmode=developとして実行され、
; DEBUGではIntelliJ側でxdebug.mode=debugが設定されて実行されるのでブレークポイントが働くようになります
xdebug.mode=develop

xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.log=/var/log/php/xdebug.log
“`

上記はPHP8 xdebug3の設定です。
※PHP7xdebug2だと設定キーと値が異なります

# Dockerの設定追加

Virtual machine pathとLocal Pathの対応が一致するように、Path mappingsも設定しましょう。例えばDockerの/var/www/abc.phpが、ホストの/Users/xxx/src/abc.p

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事