PHP関連のことを調べてみた

PHP関連のことを調べてみた

Ubuntu 23.10(Mantic Minotaur) で PHP 3.0.18 の phpinfo を見てみたい

[php.net](https://www.php.net/)で「[Download](https://www.php.net/downloads.php)」→「[Old archives](https://www.php.net/releases/)」とリンクを辿ると、「Unsupported Historical Releases」というページが表示されます。
ふと、このページの一番下にある「3.0.x」が、最新(2023年12月25日時点)のUbuntu環境(Ubuntu 23.10(Mantic Minotaur))で動くのかが気になったので試してみました。

まずは、Ubuntu 23.10(Mantic Minotaur)のDockerコンテナを起動します。

“`
$ docker pull ubuntu:mantic
$ docker container run \
–rm \
-p 127.0.0.1:8080:8080 \
-it ubuntu:mantic \
bash
“`

PHPのインストールに必要なパッケージ群をインストールします。

“`
# a

元記事を表示

[PHP/Laravel] finalやreadonlyなクラスをモックする

# final (継承不可) なクラスをモックしたい!

不必要な継承を防ぐためにfinalキーワードをクラスに対してつけるような運用をしていると、時折テストで困る場合が出てくるかと思います。

例えば、finalキーワードがついているとモックができません。
かといってモックを可能にするためだけにfinalを外すのも気が引ける・・・

“`
$ php artisan test

FAILED Tests\Unit\BookingServiceTest > can send slack message

The class \App\Services\SlackService is marked final and its methods cannot be replaced. Classes marked final can be passed in to \Mockery::mock() as instantiated objects to create a partial mock, but only if the mock is not subject to type

元記事を表示

PHPでEclipse使用時の環境構築とデバッグ設定について

# はじめに
環境構築の手順書がなく、自由に好きなのを使っていいよという現場に入り
VSCodeで、var_dumpを都度都度書いて、デバッグするの面倒だよなーという経緯から、
Eclipseを使って進める事を決意。ただ、前の現場と違い手順書がない為、記憶を辿りながら、進めたところ、躓いたところがあったので、筆者の備忘兼ねて纏めてみました。

# Eclipseを用いた場合のメリット
・リアルタイムでの変数の中身を確認しながらデバッグができる
・var_dumpなどデバッグする為の、記載をしなくて済む

# Eclipseを用いた場合のデメリット
・環境構築が面倒。使うパソコンによって、環境構築時にエラーがでる内容が異なる。
・デバッグ時に、phpMyAdminを立ち上げているとパソコンのスペックが低い場合にフリーズする。

# 構築の手順

①下記からxamppをダウンロードし、インストール
https://sourceforge.net/projects/xampp/files/

②下記からeclipseをダウンロードし、解凍する
https://willbrains.jp/in

元記事を表示

2年間1人アドベントカレンダーをやって選んだ、おすすめSymfony Component 5選

[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の22日目の記事です。

[2022年](https://qiita.com/advent-calendar/2022/symfony-component)、[2023年](https://qiita.com/advent-calendar/2023/symfony-component)と2年間、1人アドベントカレンダーをやってきました。延べ49個のSymfony Componentを紹介してきました。
アドベントカレンダーの最後に、独断と偏見で選んだおすすめSymfony Componentを紹介します!

## 1. Symfonyといえばこれ、 “Dependency Injection”

1つめはDependency Injectionです。DIやオートワイヤリングによる自動注入を提供します。Symfony以外でも使えますが、Symfonyではほぼ何も考えずともこの恩恵を受けられます

元記事を表示

全然よくわかんないけど「phpでも使ってみない?」

# PHPって?
PHPというのは、Webサーバー上で動くプログラミング言語です。
Webサーバー上のリクエストに対して動的にHTMLを生成することができます。

まずは物は試しです。

なお、今回はPHPの環境構築の話は長いのでしません。

# 書いてみよう

“`php

“`

これでアクセスしてみてください。
ちゃんとHello, Worldと表示されたでしょうか。
![スクリーンショット 2023-12-25 050829.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/f6851ea1-3e49-752a-ee17-ae57a96aac4e.png)

phpでは`echo`関数を使用することで、文字列を出力することができます。

# ちょっとした計算をしてみよう

“`php

“`

これでアクセスしてみてください。
なんと、PHPでは計算もできるのです!

…そり

元記事を表示

Docker で Laravel 環境構築

# はじめに
私は2023年10月より、内定直結型エンジニア学習プログラム「アプレンティス」に2期生として参加しています。

[【働きながら学べる】エンジニア実習 アプレンティス](https://apprentice.jp/)

カリキュラムの中でチーム開発があり、Docker での Laravel 環境構築を担当することになったので、備忘録としてまとめます。

## 目次
[1.導入するもの](#1-導入するもの)
[2.ディレクトリ構成](#2-ディレクトリ構成)
[3.compose.yaml](#3-compose.yaml)
[4.追加設定](#4-追加設定)
[5.ガントチャートによる進捗管理](#5-ガントチャートによる進捗管理)
[6.タスク管理機能の実装](#6-タスク管理機能の実装)
[7.デイリポ 機能の紹介](#7-デイリポ 機能の紹介)
[8.振り返り](#8-振り返り)

# 1. 導入するもの
今回は PHP のフレームワークである Laravel の学習期間ということで、Laravel で開発ができるように環境を整えます。
今回は PHP と Apa

元記事を表示

【PHP】HelloWorldを表示させる方法

# はじめに
今回は`PHP`で`HelloWorld`を表示させていこうと思う
“`php
echo ‘Hello World’;
“`
実行する
# さいごに
今回は`PHP`で`HelloWorld`を表示させた

元記事を表示

Kubernetes上でLaravelを立ち上げてみる。

# はじめに

[naritomo](https://twitter.com/KanagawaLo81146)と申します。

本職はインフラエンジニアを行っています。

最近色々活用し始めているK8Sについて、Laravelを立ち上げてみました。

いろいろアドバイスいただけると嬉しいです。

## 立ち上げ概要

Laravel9以上のサイトをK8Sで立ち上げる手順になります。

必要なソースは以下にまとめてあります。

https://github.com/naritomo08/laravel_K8S

## 参考URL

[M1 MacBook上へのローカルk8s環境(minikube、kind)セットアップ手順](https://qiita.com/kyontra/items/b1696df6ea072fa48c34)
[gcloudコマンドでGKEを立ち上げてみた。](https://qiita.com/naritomo08/items/d1a3122264b248915360)

## 事前準備

参考URLを参照し、M1 Macにて、ローカル環境またはGKE環境ができてい

元記事を表示

ミューテータとappend()

## はじめに
私は株式会社qnoteにて、勉強会の幹事を務めております。
2023年度勉強会の珠玉のネタを2023Qiitaアドベントカレンダーに投稿していこうと思います。

## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者

## 結論
ミューテータは便利なので使いましょう!
ただし、記述箇所は慎重に検討しましょう。

## ミューテータの定義はモデルで

https://www.yoheim.net/blog.php?q=20181105

“`php

元記事を表示

【Laravel】ヘルパー関数data_getの第二引数がnullの場合の挙動

## はじめに
Laravelで提供されているヘルパー関数data_getの第二引数がnullだった場合の挙動が意図しないものだったので、結果と実際どのような処理が行われているかを理解するために記事をまとめます。

## 実証環境
PHP 7.4
Laravel 6.2

## 引数による結果の違い
第二引数によって、以下ような結果になります。
“`php
$characters = [
‘player’ => [‘cuphead’, ‘mugman’],
‘boss’ => [‘The Root Pack’, ‘Goopy Le Grande’, ‘Ribby and Croaks’]
];
dump(data_get($characters, ‘player’, ‘第二引数のキーなし’));
// array:2 [▼
// 0 => “cuphead”
// 1 => “mugman”
// ]
dump(data_get($characters, ‘mob’, ‘第二引数のキーなし’));
// “第二引数のキーなし”
dump(data_get($c

元記事を表示

プロパティへ強制アクセス、”PropertyAccess”

[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の24日目の記事です。

## プロパティへ強制アクセス、”PropertyAccess”

[PropertyAccess](https://symfony.com/doc/current/components/property_access.html)は、オブジェクトや配列のプロパティにアクセスするためのコンポーネントです。Symfony以外でも使えます。

### インストール

“`shell
composer require symfony/property-access
“`

### 使い方

#### Get
“`php
use Symfony\Component\PropertyAccess\PropertyAccess;

$propertyAccessor = PropertyAccess::createPropertyAccessor();

$array =

元記事を表示

BEAR.Sundayはロマンチックではなくセマンティック

bear sunday

2023年12月24日、今日はクリスマスイブ🎅🎄⭐です。

今年のクリスマスイブは日曜日、ホリデー、(BEAR)”Sunday”です!一年で一番ロマンチックなこの季節、皆さんも素敵でロマンチックな一日をお過ごしでしょうか。

しかし、この記事ではBEAR.Sundayはロマンチックでなく、セマンティックというお話をします。

## Semver

BEAR.Sunday 1.0のリリースは2014年。来年で10年を迎えます。

この1.0のリリースの時に、強い思いで決めていたことがありました。それは破壊的変更(Breaking Change)を行わないということです。

[セマンティック バージョニング](https://semver.org/lang/ja/) に従えば、破壊的変更が取り込ま

元記事を表示

PHP8_2_12 xampp phpも使える様にして置く。

xampp 言うのはlocalhost(サーバーserverではない。外部に送らない。)に組み込まれている、phpの今2023/12の新しい部類のphpです。
phpが何かは説明しなくていいと思うが、一応、言うと、html内に、プログラムを記述して臨機応変に文を変えて、ユーザーの要望に沿う形で出力してあげて、分かりやすいページ構成にしてやる。のだから、余り、複雑な質問を出さない様に組む事を心がけましょう。なんかずれたな。
という事で、あるのだから、使える様にだけはしておこう。
何もしなくて動いているが、世界一般に通じる程度の「設定」になってるだけで、日本仕様には、なっていないって話。
そこで、おらは、日本サービス員だってさせたい人は「設定」をしなければならない。
難しい話の前に「どの様な仕様で」を出してみよう。
ちょっと古いが古phpもひょうじできるやろって。
“`php





MAMPを使ってPHPを表示させる

## MAMP
– ローカルにWeb開発環境を作ることができるソフトウェア
– Web開発に必要なLAMP環境が揃っている

## 実現したいこと
– MAMPを使ってPHPが実行できる環境を構築する
– ブラウザで`Hello World`と出力する

## 前提
– MAMPは初期設定のまま
– 使用PCはMac

## 手順
1\. [公式HP](https://www.mamp.info/en/downloads/ “MAMP”)からMAMPをインストール

2\. MAMPアプリケーションを開く

 

3\. アプリケーション内にあるMAMPを開く

 

4\. 右上の「Start」ボタンを押してMAMPを起動する

Laravel:マイグレーションとシーディング

## マイグレーションとは
マイグレーションはデータベースのバージョン管理のようなもの。
マイグレーションを使用してデータベースの変更を行うことにより、データベースの構造変更やデータの追加、変更、削除などの機能を持っており、PHPのスクリプトを使ってテーブルの作成処理などを用意している。

### マイグレーションの手順
1. **専用のスクリプトファイルの作成**
 コマンドを使いマイグレーションを記録するためのスクリプトファイルを作成する。
2. **スクリプトの記述**
 スクリプトファイルに、データベース管理の処理を記述する。
3. **マイグレーションの実行**
 マイグレーションを行う場合は、コマンドで実行する。コマンドにより、用意されたマイグレーション用のスクリプトファイルを実行してテーブルの生成や削除などが行える。

### マイグレーションファイルの生成
マイグレーションファイル作成は以下のコマンドを実行する。

`php artisan make:migration ファイル名`
指定んほテーブルを作成するためのマイグレーションファイルが作られる。

エンジニア-1年生がUdemy講座でWebアプリを作成できるようになった話

## はじめに
はじめましてんぐ。(特に意味のない現在進行形)
強強エンジニアを目指す大学3年生です。

私は最近色んなことに手を挑戦しているのですが、
今回は私が受けてよかったなと感じるUdemy講座について紹介します。

https://www.udemy.com/course/php7basic/

結論から述べると、上のリンクの
「**ちゃんと学ぶ、PHP+MySQL(MariaDB)入門講座**」
です。

PHP未経験の私にとってすごく分かりやすい講座でした。

**PHPを勉強してみたい人、何かしらWebアプリを作ってみたい人にはとてもオススメです!**

受講する前〜受講後の私の状況と、おすすめポイントを以下で述べたいと思います。

## 受講前の私
参考になるように、
受講前にできたこと、できなかったこと、この講座に期待していたことを述べます。

ざっくりいうと、
私は情報学部生である程度のプログラミングはできたので、

「**Web アプリの作り方を理解しながら PHP を使ってアプリ制作をしたいなあ**」

と思っていました。

### できること
– Pyth

元記事を表示

リポジトリパターンで、データの要求変更に強い設計パターンを実装

## はじめに
リポジトリパターンとは、ビジネスロジックからデータの保存や復元を別レイヤへ分離することで、コードのメンテナンス性やテストの容易性を高める実装パターンです。
本記事では、Laravelを使って、リポジトリパターンを実装します。

## リポジトリパターンとは
アプリケーションにおいて、データの保存先はさまざまです。RDBやNoSQL、SaasのAPIを利用するケースもあります。また、テストコードで本番と違うデータベースを使用することもあります。
そのとき、データのストア先が変わってもプログラムの変更範囲をできる限り小さくしたいです。

その手段の一つとして、リポジトリパターンがあります。

![スクリーンショット 2023-12-23 17.09.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1650886/0f09c67f-f64d-df07-1a35-8ba0fe33ee7f.png)

リポジトリパターンはビジネスロジックからデータストアに対して直接操作する処理を切り離します。

元記事を表示

Scaffoldがキモ可愛い「Livewire」をPHP 8.1.26+Laravel 10.38.2で試してみた(ややモッサリ)

この記事は、[PHP Advent Calendar 2023 シリーズ1](https://qiita.com/advent-calendar/2023/python) の22日目です

昨日は、 @papillon さんで [「捕まえたWebシェルを調べてみる」](https://qiita.com/papillon/items/0ce9e940b4942e9f9747) でした

【本コラムは、20分で読めます】

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

普段は、[Elixir/Phoenix/LiveView](https://qiita.com/advent-calendar/2023/elixir)メインで開発してますが、PHP開発は2000年頃から続けていて、年1~2本くらい既存システムのバージョンアップ案件やアセスメントをこなしていたりと、何かと触ってはいますが、PHPの新し目のWeb技術はあまり触れていません

そこで、前々から何となくは知ってたものの、ちゃんと

元記事を表示

Laravelで全文検索エンジンのalgoliaを使ってみた

[インフォ・ラウンジ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/info-lounge) の23日目です。

## はじめに
普段はElasticSearchやAWSのOpenSearch Serviceを使っているのですが、社内でalgoliaの話を聞いたのでどんなもんかと思い使ってみることにしました。

とりあえず感触を掴みたいだけなので、慣れているPHP/Laravelでやってみることにします。

## Laravelのセットアップ
“`bash
composer global require laravel/installer
laravel new algolia

# とりあえずSQLiteを選んでおきます
┌ Which database will your application use? ───────────────────┐
│ SQLite │
└──────────────

元記事を表示

PHP sprintf()

## はじめに
sprintf()のまとめです。文字数や桁数の指定が可能です。
自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。

## 整数で使ってみる
さっそく使ってみます。指定するものが文字列か数字によって変わります。
整数でやってみます。
“`php
$num = 500;

$newNum = sprintf(‘[%5d]’, $num); //整数は%d,5は5桁出力

echo $newNum;
“`
“`php
[ 500]
“`
ちなみに[]は必要ありません、あったほうがわかりやすいですよね。
空白を0で埋めたいなら以下のように桁数の前に0をつけます。

“`php
$num = 500;

$newNum = sprintf(‘[%05d]’, $num); //整数は%d,5は5桁出力

echo $newNum;
“`
“`php
[00500]
“`
また、左詰で出力したいなら先頭に-をつけます。
“`php
$num = 500;

$newNum = sprint

元記事を表示

OTHERカテゴリの最新記事