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

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

Laravel9でアプリを作成してみた【ゴミ箱付きToDoリストアプリ】

## ファイル構成
“`
docker-config
├─ mysql
├── data //データの保存
└── my.cnf
├─ nginx
├── Dockerfile
└── default.conf
├── php
├── Dockerfile
└── php.ini
“`

## 参考サイト
[【シンプル解説】Laravel9でゴミ箱付きToDoリストアプリを作る](https://www.youtube.com/watch?v=HHHN76dHrv0&t=1144s)

元記事を表示

コンストラクタインジェクションを紐解く

# コンストラクタインジェクションとは

**依存先のモジュールを自ら生成せずに、コンストラクタの引数としてもらうようにすること**です。

はい。イメージつきにくいですよね…。

# コンストラクタインジェクションしていない例

Carクラス内で、Engineクラスのインスタンスを作成しています。
“`php
class Car
{
private $engine;

public function __construct()
{
$this->engine = new Engine();
}

public function move()
{
$energy = $this->engine->run();
}
}
“`

# コンストラクタインジェクションしている例

Carクラス内で、Engineクラスのインスタンスは作成していません。
引数としてEngineクラスのインスタンスを受け取っています。

“`php
class Car
{
private $engine;

元記事を表示

生のPHPでフリマサービスを作る_part1

## フリマサービス作成の流れ

1\.機能を洗い出す
2\.画面設計(今回はPHPの深掘りがメインなので割愛します)
3\.テーブル設計
4\.クラス設計
5\.実装

### 機能を洗い出す
**今回の作るフリマサービスの機能は以下の通り**
– ユーザー登録
– ログイン
– ログアウト
– 退会
– プロフィール登録
– プロフィール編集
– パスワード変更
– パスワードリマインダー
– 決済(余裕があれば)
– コンテンツ登録
– コンテンツ編集
– コンテンツ削除
– コンテンツ一覧表示
– コンテンツ詳細表示
– コンテンツ検索
– コンテンツ毎の掲示板表示
– コンテンツ毎の掲示板へのメッセージ登録
– お気に入り登録

### テーブル設計
以下のように設計する
![スクリーンショット 2023-01-22 0.31.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461162/6f8d7e0d-29f0-93a3-5b42-bef4fa9ac15c.png)

###

元記事を表示

【Smarty】JavaScritpを別ファイルに書くときの読み込みパス

# Smarty使用時にJavaScritpを別ファイルに書くときの読み込みパス

## 発端
* javascriptをjs専用のフィアルに書いてそれをSmartyで読み込みたかったがうまく読み込めずハマったので備忘録。

## 原因
* Smartyからのパスを書いていた。

## 解決方法
* そのテンプレートファイルを呼び出しているPHPからのパスを書く。

## 詳細
* ディレクトリ構造
“`
test–
|-layout
| |_resource
| | |_javascript.js
| |_layout.tpl
|
|-module
| |_module.php
|
|-template_c
“`
* module.phpでlayout.tplを読んで画面に表示させているとき、layoutに記述したinputタグの内容についてjavascriptで処理をしたいとする。

“`html:layout.tpl

元記事を表示

PHPのビルトインサーバでXdebugを使いVSCodeでデバッグする

# Install
– [phpインストール](https://qiita.com/yuki777/items/c8e33ca3290b55862c6a)済みであることを前提としています
– [VSCode拡張のPHP Debug](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug)をインストールする。

# php.ini
“`
; php –ini でphp.iniもしくはxdebug.iniを探してください

zend_extension = “xdebug.so”
xdebug.client_host = 127.0.0.1
xdebug.client_port = “9003”
xdebug.mode = debug
xdebug.idekey = “PHPSTORM”
xdebug.start_with_request = yes
“`

# PHPビルトインサーバを起動する
– プロジェクトによりけりだと思いますが、下記のようなphpコマンドで起動します。
– `

元記事を表示

ライブラリで簡単に無限スクロールを実現 JS/jQuery/PHP/PDO/MySQLを使用して

jQueryライブラリの infinite-scroll を利用します。

https://infinite-scroll.com/

## HTML, JS
まずはHTMLおよびJavaScriptの部分。

注意点としてはloadNext.phpと記述する部分で追加部分を読み込むわけだが、ここにpage=1のような数値が必須である点。その数字を読み込むごとに増やしていく前提でこのライブラリは作られている。ここは自動で増えていく。

そのため、この例のようにpage=1としておけば勝手に次はpage=2として自動で読み込んでくれる。便利なんだが不便なんだか分からんが。
“`timeline.html

すでに読み込まれているコンテンツ
すでに読み込まれているコンテンツ
すでに読み込まれているコンテンツ

元記事を表示

Laravel × デプロイのまとめ

初めてのデプロイでつまづきが多すぎたのでメモ

サイト自体はこちら →

https://wp955234.wpx.jp/product

(とりあえずそれらしいものをデプロイしたいだけだったので色々雑い。)

# まずLaravelをデプロイする前に100%初学者が見るべきサイト

いろんなサイトがあるがどれもなぜかエラーが出ない前提だったりSSHなどの接続について触れてなかったりまともにわからないサイトばかり。
最終的にこのサイトにたどり着いた。結論ほぼこの通りにやればよし。

https://nebikatsu.com/6604.html/

こちらもよさげ cliborありがとうございます。

https://chigusa-web.com/blog/xserver-laravel/

とてもリンク先が丁寧なのでここからはつまづいた部分とか補足。

# SSH接続
この通りやってTeraTarm入れましょう。

https://www.xserver.ne.jp/manual/man_server_ssh_connect_tera.php

# PHPのコマンド実行するPHP

元記事を表示

【PHP】$_POSRで送信するためのチートシート

# $_POSTで送信するためには

## 発端
* $_POSTでデータが欲しいがやり方が曖昧だったためまとめる。
【結論】formに“`method=”POST”“`、“`buttonのtype=”submit”“`にしてれば飛ぶ。

## 方法
### form内で色々な情報を集めてまとめて送信する場合
“`php:index.php

// inputBox

// password

// adress

// selectBox

メールアドレス(確認用)
“`

以上

元記事を表示

PHPを基本からまとめてみた【環境構築】

## PHPとは

サーバーサイドのプログラミング言語

## WordPress

ブログを作成するシステム

## MAMPとは
PC上にローカル環境サーバ環境一式をインストールできるツール

## 環境構築

ローカル環境構築 ⇨ PCの中にサーバー

公式サイト:[MAMP](https://www.mamp.info/en/downloads/)

Pathの設定
“`
//terminal

cd /Applications/MAMP/htdocs/
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -V

//プロジェクト作成
composer create-project laravel/laravel <プロジェクト名>
“`

“`
brew tap shivammathur/php
brew install shivammathur/php/php@7.4
brew link php@7.4

元記事を表示

負荷テストする時大量データ作成プロシージャ

DROP PROCEDURE `proc_test01`
/
CREATE DEFINER=`homestead`@`%` PROCEDURE `proc_test01`(IN input int(1))
BEGIN
SET @start_idx = 0;
SET @customers_info_id = 100000;
SET @point_card = 7130010000 ;
loop1: LOOP
SET @start_idx = @start_idx + 1;
SET @customers_info_id = @customers_info_id + 1;
SET @point_card = @point_card + 1;
IF @start_idx > input THEN LEAVE loop1;
END IF;

# カード会員情報の登録
insert into DB.table1(card_info_id,customers_info_id,asp_card_main_id,asp_card_

元記事を表示

Laravel9でつまずいたところ

## Laravelスタートの見習いエンジニア
自分が学習していく中でつまずいたところをメモします。

まずはMVCの動き方とかを知るために職場の方から教えていただいたこちらのサイトをもとにTODOアプリを作成することにしました。
https://www.hypertextcandy.com/laravel-tutorial-introduction

### 環境
Laravel9+Docker+mysql+nginx
PHP 8.1.14
editor: PHPStorm

### 今日つまずいたところ
Routingはあっているはずなのに
“`
target class [クラス名] does not exist.
“`
のエラーが表示される・・・

### 解決
どうやらLaravel8とLaravel9では動作が違うという
(そりゃそうだよな・・・)

### 参考記事
https://biz.addisteria.com/laravel_route_error/
とても助かりました。
先駆者の方でこうしてまとめてくださるのは本当にうれしいこと
ありがとうございます。

元記事を表示

[WIP] PHP でデータベースに接続する PDO

:::note note
初学者の独り言メモです
PDO について DB への接続・切断、SQL を発行する部分を分けたり、例外処理、プレペアードステートメント、DAO などぼんやり理解したものの本や記事によって異なる関数が使われているのを多く見かけました。プレースホルダの書き方の違いや関数の記述の違い、関数をどう使い分けるのかを知ろうというのが目的です。書き起こしながら理解を深めようと随時加筆・修正していきます。ここで使用するデータベースは MySQL です。 JDBC ドライバ接続についても理解しないと。
:::

データベースに接続するための抽象化レイヤーが PHP に用意されています。「PHP Data Objects(PDO)」が用意されています。今回「**PDO クラス**」を使います。
参考:[PDO:PHP – Manual](https://www.php.net/manual/ja/book.pdo.php)

:::note warn
抽象レイヤーとは何かは後回し
:::

**PDO クラス** のインスタンスを生成してデータベースに接続しますが、データベース接

元記事を表示

【doctrine】Specを使用してデフォルトで条件の入ったdoctrineのオブジェクトを出力したい

## 環境
php7
Symfony3

## そもそもSpecとはなんぞや
[Doctrine-Specification/0-usage.md at 2.x · Happyr/Doctrine-Specification](https://github.com/Happyr/Doctrine-Specification/blob/2.x/docs/0-usage.md)

doctrineのクエリよりも簡素に書けるよ―というライブラリらしい。
~~全然慣れない~~

## 首題について

“`php
$spec = Spec::andX(
Spec::isNotNull(‘hoge’),
);
“`

これだけで済んだ、、、
まあ慣れなんですかね、、、
ジョインして間もないので解決しても腑に落ちないところはある。

元記事を表示

WSL2でのLaravel開発の流れ(自分用メモ)

自分用の備忘録としてLaravel導入の流れをまとめます。
## 目次
* 環境
* WSLの準備
* Docker Desktopのインストール
* Laravelのプロジェクト作成

## 環境
* Ubuntu 20.04
* WSL2
* PHP 7.4.3
* Laravel9

## WSLの準備
1. Powershellを管理者権限で実行する。
2. 下記のコマンドを実行する。
“`shell
wsl –install
“`
3. PCを再起動する。
4. 再起動すると ubuntu のターミナルが自動的に立ち上がるのでユーザ名とパスワードを設定する。

## Docker Desktopのインストール
1. 下記のURLにアクセスし、ダウンロード -> インストールする。
https://www.docker.com/products/docker-desktop/
2. 完了したら画面の指示にしたがって windows からログアウト → ログインする(再起動でも OK)。

### Dockerの動作確認
1. Docker

元記事を表示

【初心者向け】PHP の コンストラクタ について

こんにちは!
システム開発部の松木です。
今回は オブジェクト指向 の一つ、コンストラクタについて深く見ていこうと思います。

コンストラクタとは?

コンストラクタは、クラスをインスタンス化(オブジェクト化)した時に、必ず実行されるメソッドです。通常のメソッドはクラスをインスタンス化した後に、アロー演算子を用いて任意のタイミングで呼び出すことができるが、コンストラクタはインスタンス化するタイミングで、自動的に呼び出されるため呼び出す工程がありません。

▼ ブログ記事の詳細は コチラ から ▼

https://beyondjapan.com/blog/2023/01/php-constructor

***

■ 株式会社ビヨンド

・コーポレートサイト:https://beyondjapan.com​​​
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・Twitter:https://twit

元記事を表示

値の真偽の判定とfilter_var関数

`$_GET`に格納された値など、PHPには文字列でしか取得できない情報が存在します。
その値を真偽値として扱いたいときには`filter_var`関数が個人的に便利だったので、その他真偽値の判定にまつわる関数とともに出力結果をまとめました。

https://www.php.net/manual/ja/function.filter-var.php

例:
“`sample.php
$model = getData($_POST[“id”]);

$model->isPublished = filter_var($_POST(“isPublished”), FILTER_VALIDATE_BOOLEAN);
$model->save();
“`

## 早見表

| 値 | if($var) | isset($var) | empty($var) | is_null($var) | filter_var($val, FILTER_VALIDATE_BOOLEAN) |
|:-|:-:|:-:|:-:|:-:|:-:|
| true | **true** | **true** |

元記事を表示

OTHERカテゴリの最新記事