- 1. クリーンアーキテクチャとオニオンアーキテクチャの違い
- 2. PHP-クラス-オブジェクト定数
- 3. MAMPで作るPHPのログインページアプリ #1
- 4. コンパイルに 5 日かかった PHP リソースのコレクションです。気に入ってください。
- 5. 三項演算子の省略形には気をつけろ
- 6. 【macOS】asdfを使ってphpを導入するには
- 7. Macの大文字/小文字を区別しない仕様でハマった
- 8. 【PHP】参照渡しって何なのさ
- 9. CakePHPプロジェクト作成の備忘録
- 10. やらない言い訳はいらない、未経験エンジニアへの転職
- 11. Python基礎でスキップしていたこと:「例外処理」について学ぶ
- 12. FuelphpでDB接続情報を変える方法【MAMP環境下】
- 13. OSとは
- 14. MAMPインストール後、サーバーStartをすると「Apache couldn’t be started. Please check your MAMP installation and configuration.」というエラー
- 15. 長期インターンで学んだことについて
- 16. PHPエンジニアがよく疑問に感じること
- 17. PHP-クラス-クラスメソッド
- 18. 【ノート】PHP foreach文
- 19. PHP-クラス-インスタンス不要で利用できるクラス内の変数
- 20. GitList-2.0.0をUbuntu24.04で動かしてみる
クリーンアーキテクチャとオニオンアーキテクチャの違い
ドメイン駆動設計で一緒に用いられるアーキテクチャ、奥が深い。
そりゃ皆が色々本を出すわけですよ…。今回は表題の通り、クリーンアーキテクチャとオニオンアーキテクチャの違い、二つのアーキテクチャ名はよく見るけど、ソースで見たら具体的にどう変わるの?ってのを調べたのでメモ。
# 二つの違い
まず、文言で二つの違いをおさらい
:::note info
クリーンアーキテクチャ
クリーンアーキテクチャは円構造、以下の4つのレイヤーを持つ
* エンティティ層
アプリケーションのビジネスルールや状態を表すモデル
* ユースケース層
特定のユースケースに従ってエンティティを操作する
* インターフェース層
外部への入出力(インフラ、UI)とのやり取り
* インフラ層
DB、ファイルシステム、外部サービスとの接続
::::::note info
オニオンアーキテクチャ
同じくレイヤー構造を持つが、ドメインモデル(ビジネスルール)を中心に捉えた構造* ドメインモデル
ビジネスのコアに
PHP-クラス-オブジェクト定数
# はじめに
PHP・WEB開発を独学中アラフィフ主婦の忘備録です。## 定数とは
**変数と同様の性質を持っているが、再代入できない値のこと。**
* システム固有の番号など一度定めたら原則として変更しない値を保存します。
* クラス内で定義された定数のことをオブジェクト定数といいます。### サンプルコード
“`PHP
class Item
{
// const キーワードを用いてオブジェクト定数を定義
const VAT = 1.2; // 定数名は全て大文字
// 複数の単語はアンダースコア _ で繋ぐ(コンスタントケース または アッパースネークケース)
public $cost = 200;public function displayCost()
{
// クラス内からオブジェクト定数へのアクセス
// self::オブジェクト定数
echo (int)($this->cost * self::VAT), “円\n”;
MAMPで作るPHPのログインページアプリ #1
## 目次
[概要](#概要)
[目的](#目的)
[要件定義](#要件定義)
[開発環境](#開発環境)
[データベース設計](#データベース設計)
[デバック準備](#デバック準備)
[トップページ作成](#トップページ作成)
[ログイン後のページ作成](#ログイン後のページ作成)
[アカウント登録ページ作成](#アカウント登録ページ作成)
[今後の課題](#今後の課題)## 概要
PHP初学者がログインページを作成して、PHPについての知識をアウトプットする。## 目的
PHP初心者の私がPHPを勉強するにあたって、自分で行った勉強の内容を備忘録として記事を作成していきます。
初学者向けのPHP勉強でToDoリストを作成するものがありますが、以前似たようなものを作成したので、今回はログインページを作成します。今回の記事では、`動くものを作る`というのが目的なため、セキュリティやデータベースの設計などはあまり考えずに実装します。
今回作成したコードをもとに次回以降の記事でコードを改修しつつ、PHPについての知識をインプット/アウトプットしていきたいと思います。
また、
コンパイルに 5 日かかった PHP リソースのコレクションです。気に入ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3893259/f365453f-56a0-8470-b5b7-23268a0af282.png)
これは、皆さんが必要なものを見つけるのに役立つように、私がまとめたPHPリソースのコレクションです。無駄な時間をかけずに検索できるようにしています。毎週更新しますので、役に立ったらスターをつけてください❤️。転載や共有を希望される場合は、出所を明記してください。ありがとうございます!😆
## PHP PSR コーディングスタンダード
– 公式サイト: [www.php-fig.org](http://www.php-fig.org)
– 原文: [github.com/php-fig/fig](https://github.com/php-fig/fig)## PHPリソースリスト
1. **PHP環境デプロイツール**:
– [Servbay](https://www.servbay.com)
– [XAMPP](http
三項演算子の省略形には気をつけろ
## 初めに
PHPやjavascriptなどの三項演算子で
“`javascript
const hoge = x ? x : y
“`
などと書く場合に省略形として
“`javascript
const hoge = x ?? y
“`
とする場合がありますが、この二つの結果が違ってくる場合があります## 実際に試してみる
例えば以下の場合は同じ結果です
“`javascript
const x = 1
const y = 999
console.log(x ? x : y)
> 1const x = 1
const y = 999
console.log(x ?? y)
> 1
“`しかし`x = 0`の場合
“`javascript
const x = 0
const y = 999
console.log(x ? x : y)
> 999const x = 0
const y = 999
console.log(x ?? y)
> 0
“`
となり結果が異なります## なぜか
`??`は正式名称`Null合体演算子`と言い、名前の通りn
【macOS】asdfを使ってphpを導入するには
mac に asdf を使って php を導入する奮闘記
WSLでの使い方は以下の通り
https://qiita.com/sigeta/items/54eeb7671484c62d0853
## asdf の導入からエラーまで
mac だとなんか `brew` にあるみたいなので、こちらからインストールしてみる
※ちなみに当方 Intel Mac“`bash
$ brew install asdf
$ asdf –version
version: v0.14.1$ asdf plugin-add php https://github.com/asdf-community/asdf-php.git
Plugin named php already added
“`ありゃ、すでにPHPプラグインが入ってた
“`bash
$ asdf install php 8.3.12
“`数々のエラーが出てきた…
検索用に並べておく“`
configure: error: bison 3.0.0 or later is required to
Macの大文字/小文字を区別しない仕様でハマった
## 環境
以下の環境で動作させています。
“`
% sw_vers
ProductName: macOS
ProductVersion: 12.6.5
BuildVersion: 21G531
“`## ハマってしまった事象
Macが大文字/小文字を区別しない仕様を失念していて、Mac環境で動作していたコードがLinux環境へのデプロイした際にエラーを引き起こしました。“`
// classes/trait/fuga.php というトレイトファイルを呼び出したい【classes/piyo.php】
namespace Hoge;
use Hoge/Trait/fuga.php // traitというディレクトリを大文字で記述してしまったことでエラーが発生
“`
Macで「aa.php」と「AA.php」の作成を試みたところ、「AA.php」という名前の新しいファイルは作成されず、「aa.php」が更新されるだけでした。
“`
% touch aa.php
% ls
aa.php
% touch AA.php
% ls
aa.php
“`#
【PHP】参照渡しって何なのさ
# はじめに
ここでは以下のページでご紹介させて頂いたフレームワーク環境で使っているPHPの技術情報を中心に備忘録としてまとめています。
https://qiita.com/glasses_seven/items/433ac9d9fcbdb72c6d18/
# お決まりの書き方
「参照渡し」でよく使われるのは以下のようなパターンではないでしょうか。
“`php:引数での「参照渡し」
function testFunction(&$test)
{
<ステートメント>
}
“`上記のように関数呼び出しでリターン値以外のデータも取得したい時によく使われる方法だと思います。
他にもクロージャーとのデータのやり取りをする場合にも使われる事がありますが、ここで注目すべきは`$test`という引数の先頭に`&`(アンパサンド)が付いているところです。
これはC言語でもよく使われる書き方で「アドレス渡し」と呼ばれていますが、PHPは昔から他のプログラミング言語を部分的にリスペクトしているようなところがあるので、これもその一つだと思っています。
PHPとC言語ではコンパ
CakePHPプロジェクト作成の備忘録
# 記事作成の背景
Cake PHP公式サイトからコマンドでプロジェクトを作成しようとしたら、エラーが表示されてしまったので
備忘録として簡単に記載しようと思います。# 結局原因は、何だったのか?
原因は、php.iniファイルでの設定(図1)がコメントアウトしたままであったことでした。今回の箇所は、「Dynamic Extension」の箇所を更新していきます。
![PHP設定ファイルの画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/8a0a9035-480f-98ba-fc37-e5e5a4d735bd.png)
## extention=intlを有効にする
「extention=intl」はデフォルトだとコメントアウトのままであったので、こちらのコメントを外しましょう。
“`php.ini(更新前)
;extension=intl
“`“`php.ini(更新後)
extension=intl
“`## extenti
やらない言い訳はいらない、未経験エンジニアへの転職
自己紹介
————————-
初めまして、秋の字と申します。
28歳で未経験としてIT業界へ転職、現在は無事通信系の会社に就職できて半年ほどエンジニアとして
業務しております。
子どもが2人おり、毎日エネルギッシュな生活をして充実した日々を過ごしています!
3か月ほどスクールにて学習を行い、転職活動は約3か月ほどかかりました(ご縁があり早期に決まり良かった・・・)今回お伝えしたこと
————————–
子どもが2人おり、確実に給料が下がる中での転職は不安しかありませんでした。
その中で同じように踏みとどまってしまっている方へ、行動が起こせるよう今回お話したいと思います。エンジニアへの転職を決意した日
————————————
エンジニアを目指す経緯についてお話します。方向性のない大学生
————————–
大学は情報系の大学でした、ただ私は映像や音響、HTMLやCSS、JavaScriptなど深堀りのない浅くな勉強を行っていまし
Python基礎でスキップしていたこと:「例外処理」について学ぶ
## あらすじ
### 例外処理ってif分で判定するだけじゃないの?という大きな勘違い
業務で使用するツールを作成したり、pythonを使用することがしばしばあります。とはいえ、ちょっとした効率化ツールっだったり社内向けのツール開発がほとんどで、例外処理については`if分で判定しておけばいいんでしょ`くらいの感覚でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562770/5756306d-0948-f655-3689-3a5b7e9da047.png)
ただこの場合エラーが発生してしまうと必ずプログラムが終了してしまいます。
小さなツールだと「そういう癖があるのね」くらいで済みますが、これを参照してほかのプログラムが動いたりする場合はしっかり処理しておかないと、何が原因で落ちてるのかわかりにくくなります。
また、コメントをしっかり残さないと何のためのif文なのかもよくわからなくなりがちです。### きっかけ
Web開発をする際に学んだJavascriptやPHPを
FuelphpでDB接続情報を変える方法【MAMP環境下】
### 主に自分用のメモなのでわかりずらい部分はご了承ください🙇
【前提】
fuelphpとmamp環境で簡素なタスク管理アプリを作成中です。【起こっていた問題】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909033/ed591ca6-f987-0028-86ab-00b9dd1e2422.png)上記の写真の様なDBを利用していたが、
DB名を変更したく
phpmyadminより以下のようにDB名を変更した。
(DB名をuserregister→taskappへ)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909033/f9a8fc05-d6e9-fd68-a472-24b3b33ea1c5.png)
これで実行すると以下のようなエラーが出た。
![image.png](https://qiita-image-store.s3.ap-northeast-1.a
OSとは
## OSとは
OSとはオペレーティングシステムの略称で **「基本ソフトウェア」** のこと。
PCやスマートフォンを使用する上で必要なソフトウェア。**Mac、Windows、Linux、iOS、Android** などを指す。
PCやスマートフォンの基本操作をするために必要なもの。
PCを使用していて **「当たり前だと思う機能」** を全て提供してくれる。**プログラムの中のプログラム。**
MAMPインストール後、サーバーStartをすると「Apache couldn’t be started. Please check your MAMP installation and configuration.」というエラー
今回、PHPの開発環境を構築するためにMAMPを導入しました。
MAMPは、Mac上でApache、MySQL、PHPを手軽にセットアップできるアプリケーションです。
MAMPは無料版と有料版のMAMP PROがあり、間違えてPRO版を起動しないよう注意が必要です。まず、以下のリンクからMAMPをダウンロードし、インストールします。
https://www.mamp.info/en/mac/インストール後、MAMPのアプリケーションを起動し、”Start”ボタンをクリック。しかし、以下のエラーメッセージが表示されました。
“`「Apache couldn’t be started. Please check your MAMP installation and configuration.」“`
PHPとMySQLは正常に動作しているものの、Apacheが起動しない状態です。
## エラー原因の特定
Apacheが起動しない原因を探るため、エラーログを確認しました。
エラーログは以下のパスに出力されます。
“`Applications/MAMP/logs/apach
長期インターンで学んだことについて
はじめに
PHPエンジニアがよく疑問に感じること
PHPエンジニアがよく疑問に感じる点には、以下のようなものがあります:
# 1. 一貫性のない関数名:
PHPの標準関数には命名規則の一貫性がないものがあります。例えば、`strpos()`と`str_replace()`のようにアンダースコアの有無が統一されていません。## 理由:
1. 歴史的な経緯:
PHPは1995年に個人プロジェクトとして始まり、急速に発展しました。初期の段階では一貫した命名規則が確立されておらず、関数名が場当たり的に決められていたことがあります。2. 後方互換性の維持:
既存のコードを破壊しないために、古い命名規則の関数を残しつつ、新しい命名規則を導入せざるを得ませんでした。3. 複数の開発者の関与:
PHPの発展過程で多くの開発者が関わり、それぞれが異なる命名規則を持ち込んだ可能性があります。4. C言語の影響:
PHPは初期にC言語の影響を強く受けており、C言語風の命名規則(アンダースコアなし)と、より読みやすい命名規則(アンダースコアあり)が混在しています。5. 機能の追加と拡張:
新しい機能や拡張が追加される際に、既存の命名規
PHP-クラス-クラスメソッド
# はじめに
PHP・WEB開発を独学中のアラフィフ主婦の忘備録です。## メソッドの種類
PHPでは クラスメソッド と インスタンスメソッド という2種類のメソッドがあります。
1. インスタンスメソッドは、インスタンス生成後にアクセスが可能なメソッドです。**インスタンス毎に引数を代入する為、それぞれのメソッドで値が異なります。**
1. クラスメソッドはインスタンスを生成せずにアクセスが可能なメソッドです。**クラス自体に紐づく為、インスタンスに関わらず共通の処理を行います。**クラスメソッドを実行するには、クラスの中からと外からで書き方が違います。
### クラスメソッドをクラス外から実行する
“`PHP
class Customer
{
// クラスメソッドの定義
public static function sayHello() { // アクセス修飾子に続けて static を記述
echo “Hello\n”;
}
}
// クラス外からの実行
Customer::sayHello(); // クラス名::(スコープ
【ノート】PHP foreach文
“`PHP:foreach文
foreach(配列 as 各要素の添え字が代入される変数 => 各要素の値が代入される変数){
繰り返したい処理
}
foreach($numbers as $key => $value){
echo”添え字”. $key. “番は”;
echo $value. “です。
“;
}
“`:::note info
チェックボックスとの関係
チェックボックスからデータを送る場合、選択されたものを配列として送るのでforeach文で処理する。
:::
PHP-クラス-インスタンス不要で利用できるクラス内の変数
# はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。https://sls.ideal-growth.jp/12/lesson/312/learning
## プロパティの種類
PHPでは クラス変数 と インスタンス変数 という2種類のプロパティがあります。
1. インスタンス変数は、インスタンス生成後にアクセスが可能なプロパティです。**インスタンス毎に紐づけて値を保持する為、それぞれのオブジェクトで値が異なります。**
1. クラス変数はインスタンスを生成せずにアクセスが可能なプロパティです。**クラス自体に紐づけて値を保持する為、インスタンスに関わらず共通の値が適用されます。**### サンプルソース
変数名など一部変更しています。“`PHP
class User
{
// クラス変数はアクセス修飾子の記述に続けて、static キーワードを用いて定義
public static $userCount = 0; // 変数には値をセットしておく必要ありpublic function countUp()
GitList-2.0.0をUbuntu24.04で動かしてみる
# 概要
– GitList というのは、Linuxサーバー上にある プライベートなGitリポジトリをWebインターフェースを通してソースコードや差分、コミット履歴をブラウジングするCGIです。
https://github.com/klaussilveira/gitlist– PHPで書かれています。
– 類似のものに GitWebとかWebSVNとかありましたけれど、それらは PerlのCGIです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28186/65b5b5e2-3536-141d-bdea-daff919bc9c6.png)
# 前提
– Ubuntu24.04 + Apache2 + PHP8.3 で動かしてみます。
– もちろん Gitはインストール済、Gitリポジトリはローカルファイルとして存在。# 動かし方手順
– ソースコードリポジトリではなく、以下のURLから TarBallを取得します。
https://github.com/k