- 0.0.1. 【PHP】 paizaスキルチェック 掛け算 解答
- 0.0.2. マジックメソッド①
- 0.0.3. 【AtCoder Beginners Selection】初学者がPHPで解いてみた
- 0.0.4. Laravel フラッシュメッセージを実装してみる🧑💻
- 0.0.5. 【AtCoder】備忘録ABC347-B
- 0.0.6. Undefined type ‘App\Controller\Request’というエラーの対処法
- 0.0.7. composerで作成したプロジェクトのサーバー起動時エラーが出る
- 0.0.8. 【PHP】マイナーフレームワーク「Flow」を試してみる~ViewHelper編~
- 0.0.9. macOSでphpコマンドを使用できるようにする
- 0.0.10. Laravelのキャッシュについて
- 0.0.11. PHPのhtmlspecialchars
- 1. ユーザー登録フォーム
【PHP】 paizaスキルチェック 掛け算 解答
### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/multiplication### 解答
“`answer.php
“`### Point
標準入力についての理解があれば問題ないと思います
マジックメソッド①
## はじめに
### マジックメソッドとは
あらかじめ特定の役割を与えられたメソッド。
シグネチャ(名前、引数、戻り値の組み合わせ)と呼び出しのタイミングが決められていて、中身(機能)がないため、必要に応じて自分で実装する必要がある。#### __getメソッド
未定義のプロパティを取得しようとした際
#### __setメソッド
未定義のプロパティを設定しようとした際
##### 参考コード
`to`, `subject`, `message`だけを定義しておいて、それ以外のプロパティは`__get`/`__set`メソッドで処理させている。
“`php:MyMail.php
class MyMail
{
public string $to;
public string $subject;
public string $message;private array $headers = [];
public function __set(string $name, string $value)
{
【AtCoder Beginners Selection】初学者がPHPで解いてみた
# はじめに
AtCoder Beginners Selection をPHPで解いてみました。
これまではPythonを主に学習していましたが、エンジニアとして転職が決まり転職先でPHPを使用するため学習しています。
基本的な文法が習得できているかの確認のために行いました。そもそも実務未経験な上、PHPは入門書を一通り学習した程度のためかなり拙いコードだと思います。
ご指摘があれば、コメント欄で頂けると幸いです。# 解答
### ABC086A – Product“`PHP
“`### ABC081A – Placing Marbles
“`PHP
“`### ABC081B – Shift only
“`PHP
Laravel フラッシュメッセージを実装してみる🧑💻
# はじめに🐯
※ここに記すことは、個人の試行錯誤体験記です。記載する情報が必ずしも正しいとは限りません。投稿時点での個人の最適解です。また、間違った認識も多くあると思います。その時は、優しく指摘いただけますと幸いです。
# こんな方にオススメです🙆♂️
– 駆けだし始めた初学者
– フラッシュメッセージってなんだっけ?
– ChatGPT使ったけどいまいちわかんない
# なぜ、実装したのか🛠
– 現役エンジニアのメンターサービス受講中。そこのカリキュラムである、チーム開発の担当タスクのため
# フラッシュメッセージについて💡
そもそも、フラッシュメッセージを知らなかったのでメンターに質問したがはっきりと認識できなかったので、調べて理解度を高めました。
#### 個人的なサマリー💁♂️
– ウェブアプリケーションにおいてユーザーが行った特定のアクションの結果に関する一時的な通知(フォームの送信やデータの更新など)
– 通常、次のページの読み込み時に一度だけ表示され、その後自動的に消えるように設計されている
– UXを向上させるための重要なツール
# 特徴🚥#### 一時性
フ
【AtCoder】備忘録ABC347-B
## 問題
https://atcoder.jp/contests/abc347/tasks/abc347_b
PHPで解いています。
B問題はネストした繰り返し処理が肝のよう。## 回答
“`php
→各部分文字列を集合(セット)に格納し、最終的にその集合の要素数を出力する
:::“`ph
Undefined type ‘App\Controller\Request’というエラーの対処法
# 問題のコード
“`php
get(‘name’);
$pass = $request->get(‘pass’);
$result = ‘
composerで作成したプロジェクトのサーバー起動時エラーが出る
# はじめに
“`
php bin/console server:run
“`
上記のコマンド実行時にエラーが出たので解決方法をここに綴ります。# 試したこと
#### website-skeletonプロジェクトの作成
“`
composer create-project symfony/website-skeleton プロジェクト名
“`
#### プロジェクトのフォルダ内に移動
“`
cd プロジェクト名
“`
#### サーバーの起動
“`
php bin/console server:run
“`
上記のコマンドでエラが発生:::note alert
Command “server:run” is not defined.Did you mean one of these?
dbal:run-sql
server:dump
【PHP】マイナーフレームワーク「Flow」を試してみる~ViewHelper編~
# 初めに
Flowでは、Fluidというテンプレートエンジンが採用されており、ViewHelperと呼ばれる機能が使えます。今回は、このViewHelperについて解説していきます。# ViewHelperとは
[こちら](https://qiita.com/nnhkrnk/items/06631a2ac57c6465696b#%E3%82%BF%E3%82%B0%E3%81%AE%E5%AE%9F%E6%85%8B)の記事で、ViewHelperを定義することでHTML内で使える独自のタグを作成することができると紹介しました。今回は、独自のViewHelperを作成してみようと思います。## 使い方
作り方は簡単です。
以下のような形で書きます。“`php
macOSでphpコマンドを使用できるようにする
# 前提
homebrewをインストールしてあること# 現状
“`
$ php -v
zsh: command not found: php
“`
command not found: phpと出ます。# やり方
下記コマンドを実行し、homebrewを最新化
“`
brew upgrade
“`
下記コマンドを実行し、PHPを手動でインストールする。
“`
brew install php
“`下記コマンドを実行し、PHPのversionとコマンドを使用できることを確認
“`
php -vPHP 8.3.7 (cli) (built: May 7 2024 16:35:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
“`PHPはほとんどのmacOSシステムにプリインストールされているため
Laravelのキャッシュについて
## キャッシュとは
動作を高速化するため利用されます。## キャッシュの作り方
例えば、`config`ディレクトリにある設定ファイルのキャッシュを作成する場合
“`bash
php artisan config:cache
“`を実行することで作成されます。
他にもルートのキャッシュやviewのキャッシュなど、様々な種類があります。## 何が起きているのか
上記のコマンドでキャッシュ作成コマンドが実行されると
`/bootstrap/cache/config.php`
というファイルが作成されます。これこそがキャッシュの正体です。このファイルの中身は、主に`config`ディレクトリ内のファイルの中身が**全て纏められたもの**であり、このファイルが作られると今後はこの設定を参照するようになります。
“`
.
├── app
├── bootstrap/
│ ├── cache/
│ ├── config.php ←キャッシュファイル
│ ├── …
├── config/ ←このディレクトリの中身全てが纏められる
│
PHPのhtmlspecialchars
# htmlspecialcharsとは?
「HTMLコードをそのままブラウザに表示しようとすると、HTMLコードとして認識されますが、特殊な文字を別の文字列に変換することで、ブラウザにHTMLコードとしてではなく、ただの文字列として表示されるようになります。」
と記載しているので試してみる。
**「index.html」送信フォームのファイル**
“`html
Document
ユーザー登録フォーム
オブジェクトの操作
## はじめに
PHPのオブジェクトの操作についてまとめる。
### オブジェクトの代入
オブジェクト変数の代入は参照渡しが規定。
“`php:Person.php
class Person
{
public $firstName;
public $lastName;public function __construct($firstName, $lastName)
{
$this->firstName = $firstName;
$this->lastName = $lastName;
}public function show()
{
print “私の名前は{$this->lastName}{$this->firstName}です。
“;
}
}
“`“`clone.php
require_once ‘Person.php’;$p1 = new Person(‘リオ’, ‘山田’);
$p2 = $p1;
$p2->firstN
Webアプリ開発 記事の詳細とコメント編
# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回は記事の詳細とコメント機能についてです。# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5# ソースコード
https://github.com/opatu07/portfolio
# 考えたこと
## 記事の詳細
### 実装事例
ホーム画面から![layout.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/884220d0-500b-7525-0c0c-652b7afef065.png)
記事のタイトルまたは「この記事を読む」を押してもらうと記事の詳細を確認できます。
今回の例では「スープ
Webアプリ開発 記事の更新、削除編
# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回は作成した記事の更新、削除機能についてです。# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5# ソースコード
https://github.com/opatu07/portfolio
# 考えたこと
## 記事の更新
### 実装事例
ダッシュボード画面から「記事を編集する」を押してもらうと![dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/5468d24c-19c3-d869-301b-7e516c675e91.png)
記事の編集画面が出てくるのでここで記事を編集
Webアプリ開発 記事の新規登録編
# 初めに
webアプリ開発ができたので、どんな感じで作成したのかをまとめたいと思います。
今回はマイページ編集についてです。# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5# ソースコード
https://github.com/opatu07/portfolio
# 考えたこと
## 記事の新規登録
### 実装事例![author.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/190d04f5-d074-edb8-4c85-804d36f90518.png)
権限があるユーザーには投稿一覧ボタンが出てきます。
押すと![dashboard.png](h
【PHP】if文を簡潔に書くために守るべきルール
:::note warn
エンジニア初心者の投稿であるため、間違っている箇所が多くあるかと思います。
間違っているなどあればご教授いただけると幸いです。
:::## はじめに
PHPの学習中、if文の条件式の書き方を全く意識せず書いていたため、非常に美しくない条件式を量産してしまっていました。戒めの意味も込めて記事に残したいと思います。## if文とは(PHP)
PHPの公式サイトにはこのように書いてありました。
> この構文は、命令の条件実行を可能にします。 PHP では、C 言語に似た次のような if 構文が使用されます。
>if (式)
文
>式は論理値で評価されます。 式が true と評価された場合、 PHP は文を実行し>ます。false と評価された場合は、これを無視します。条件の書き方次第では何通りもの書き方ができます。今回はそのことについてメンターの方に指導してもらったことを含めつつ、自分なりに考えたことをここに残したいと思います。
## if文 条件式の書き方
### 否定系・肯定系どちらも使える場合は肯定系を使う
条件式が!==と===のどちら
【PHP】PHPにおける不変クラス
# 不変クラスとは
不変クラスとは、オブジェクトを作成した後に状態が一切変化しないクラスのことです。
クラスを不変にすることで、意図せずオブジェクトの状態が変更されてしまうことを防ぎます。
クラス設計においては、可能な限り不変クラスとすることが保守性の高いプログラムを組む上での近道となります。# PHPにおける不変クラス
PHPでは近年、より堅牢なコードを記述できるようバージョンアップが重ねられており、不変クラスの設計も行いやすくなりました。
以下はBlog(ブログ)クラスを不変クラスとして記載したサンプルコードです。
なお、PHPのバージョンは現時点で最新の8.3を使用しています。“` php
titl
PHPの多次元配列から特定のキーの値を取り出す
普通のPHPerなら知ってて当然かもしれないので自分用の覚え書き。
ユーザー情報等のデータベースを扱うことがよくあって、`FETCH_ASSOC|FETCH_UNIQUE`なんかでデータを取り出すと
“`php
print_r($alldata);
/*
Array
(
[1] => Array
(
[id] => 1
[account] => suzuki
[sei] => 鈴木
[mei] => 一郎
[seikana] => すずき
[meikana] => いちろう
)
[3] => Array
(
[id] = 3
[account] => tanaka
[sei] => 田中
[mei] => 次郎
[seikana] => たなか
Webアプリ開発 マイページ編集編
# 初めに
webアプリの開発ができたので、どんな感じで作成したのかをまとめたいと思います。
今回はマイページ編集についてです。
# 開発環境macOS Sonoma 14.4.1
PHP 8.3.3
Laravel Installer 5.2.0
Laravel Framework 11.0.5# ソースコード
https://github.com/opatu07/portfolio
# 考えたこと
## マイページ編集
### ビュー
マイページに移動する前に
![commonUserDropdown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/6de98a1d-9740-d8c8-afab-52b31ffa2138.png)
自分の名前を押すとドロップダウンのメニューが出てくるようにして、「プロフィール」を押すとマイページ画面に飛べるようにしました。
マイページはLarave Breezeを参考にしました。![updateProfile.png](https://
トレイト
## はじめに
トレイトについてまとめる
### トレイトとは
いくつかのメソッド群を独立したクラスで再利用できるようにした仕組みのこと。
PHPの継承では単一継承しかできないが、トレイトを使えば多重継承のようなことが可能。### 参考コード
“`php:trait_multi.php
interface IFax {
function send();
}interface IPrinter {
function print();
}trait FaxTrait {
public function send() : void {
print ‘sening Fax…sended!’;
}
}trait PrinterTrait {
public function print() : void {
print ‘printing…completed!’;
}
}class FaxPrinter implements IFax, IPrinter {
use Fax