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

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-クラス-クラスメソッド

# はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。

https://sls.ideal-growth.jp/12/lesson/313/learning

## メソッドの種類
PHPでは クラスメソッド と インスタンスメソッド という2種類のメソッドがあります。
1. インスタンスメソッドは、インスタンス生成後にアクセスが可能なメソッドです。**インスタンス毎に引数を代入する為、それぞれのメソッドで値が異なります。**
1. クラスメソッドはインスタンスを生成せずにアクセスが可能なメソッドです。**クラス自体に紐づく為、インスタンスに関わらず共通の処理を行います。**

クラスメソッドを実行するには、クラスの中からと外からで書き方が違います。

### クラスメソッドをクラス外から実行する
“`PHP
class Customer
{
// クラスメソッドの定義
public static function sayHello() { // アクセス修飾子に続けて static を記述
echo “Hello\n”

元記事を表示

【ノート】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

元記事を表示

Dockerが近年その優位性を失いつつある理由

近年、Dockerは開発分野で一世を風靡し、その革新的な技術でソフトウェア開発を革命的に変えました。当初、Dockerは軽量なコンテナ化技術を通じて開発とデプロイメントプロセスを大幅に簡素化しました。しかし、2024年にはこの技術の欠点が次第に明らかになってきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3906219/7acca44a-6044-3325-3e22-62764446a6c4.png)

## 初期の栄光

それほど前のことではありませんが、Dockerは「私のマシンでは動くが、あなたのマシンでは動かない」という古くからの問題をうまく解決しました。そのポータビリティと互換性により、アプリケーションを異なる環境に簡単に移行できるようになりました。しかし、これらの利点は徐々に時とともに影を潜めてきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3906219/

元記事を表示

カスタムホスト名に” _ “(アンダースコア)を使わないようにしている理由

# 先に結論

PHPで**filter_var**を使ってURLサニタイズをすると、**アンダースコアは不正URLとして弾かれてしまう**ため。

代わりに**ピリオド**などを使うのが正しい。

## 経緯

WordPressを使って、リダイレクト機能の実装を行っていました。
サニタイズについて知らなかった頃、慣習としてディレクトリ名と同じカスタムホスト名を付けて、ローカル環境で使用していました。

“`
http://example_project
“`

この環境下であることを前提に、以下のような関数を実行します。

“` redirect.php
function custom_redirect_sanitize_url($rules) {
$sanitized_rules = [];
$rules = json_decode($rules, true);

foreach ($rules as $key => $value) {
if (filter_var($key, FILTER_VA

元記事を表示

PHP-クラス-コンストラクタ

# はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。

https://sls.ideal-growth.jp/12/lesson/311/learning

## クラス-コンストラクタ
PHPでは、`__construct`(コンストラクタ) というメソッドを実装することで、インスタンス生成時に処理を実行することができます。
自由に名前が付けられないので、決まった呪文みたいなものだと覚えておきましょう。

### 注意点
* `__construct` 以外の命名はできない(アンダーバーは2つ)
* 呼び出されるタイミングはインスタンス生成時(クラスの外で`new`をした時)
* `return`文の使用はできない

### サンプルソース
変数名など一部変更しています。

“`PHP
class Person
{
public $name;
public $age;

// コンストラクタの定義
public function __construct($name, $age)
{
echo

元記事を表示

PHPのリファレンスとCのポインタの違い

PHPのリファレンスとCのポインタには、以下のような主な違いがあります:

## 概念の違い

– PHPのリファレンスは、同じ変数の内容を異なる名前で呼び出すための仕組みです。
– Cのポインタは、メモリ上のアドレスを直接扱う仕組みです。

## 機能の違い

– PHPのリファレンスでは、ポインタ演算やメモリアドレスの直接操作はできません。
– Cのポインタでは、アドレス計算や低レベルのメモリ操作が可能です。

## 実装の違い

– PHPのリファレンスは、シンボルテーブルのエイリアス(別名)として機能します。
– Cのポインタは、実際のメモリアドレスを格納します。

## 使用方法の違い

– PHPでは、変数名の前に「&」をつけてリファレンスを作成します。
– Cでは、「*」を使用してポインタを宣言し、「&」でアドレスを取得します。

## オブジェクトの扱い

– PHPでは、オブジェクトはデフォルトで参照渡しされます。
– Cでは、オブジェクトのポインタを明示的に扱う必要があります。

## 安全性

– PHPのリファレンスは、Cのポインタに比べて安全性が高く、メモリ管

元記事を表示

【Laravel】XServerでメールをJobで送信するようにする

# はじめに

こんにちは、エンジニアのkeitaMaxです。

Xserverでメールを送る処理を作成したいと思った時の話です。

本当はSupervisorで動かしたかったのですが、XServerだと動かすことができなさそうだったので困った話です。

Lravael10を使用しました。

# 実装方法

XServerのCronを設定して、Laravelのスケジューラを動かし、
スケジューラに設定してあるqueueを動かす+リスタートするバッチを動かすようにします。

# XServerのCron設定

まずXServerのCron設定からCron設定追加をします。

毎分動かすようにするので以下のようにします。

![スクリーンショット 2024-10-08 22.07.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715123/d87c3f86-24fa-00d6-e680-b45b025ed874.png)

“`
cd /home/xxxxxxxx/hack/src && /us

元記事を表示

【Laravel】csvの全項目をダブルクォーテーションで囲む方法!

泉([@izumin_0401](https://twitter.com/izumin_0401))です。

今回は、Laravelでcsvの全項目をダブルクォーテーションで囲む方法を解説しやす!

:::note info
今回は、便利なので「League/Csv」というライブラリを使います。よろしくっす!
:::

# ブログ記事はこちら

https://traveler0401.com/laravel-csv-enclosure-double/

# 【Laravel】csvの全項目をダブルクォーテーションで囲む方法

“`php
use League\Csv\Writer;

class CsvService
{
public function exec()
{
$csv = Writer::createFromString(”);

$csv->forceEnclosure(); // ダブルクォーテーションで囲む

$csv->insertOne($header);
$csv->inser

元記事を表示

SOLID原則とは? ~後編 I・D の2原則について解説~

# SOLID原則とは?

**オブジェクト指向における設計原則のこと**

以下の5つの原則の頭文字をとったものです。

1. 単一責任の原則(**S**ingle Responsibility Principle)
2. オープン・クローズドの原則(**O**pen-Closed Principle)
3. リスコフの置換原則(**L**iskov Substitution Principle)
4. インターフェース分離の原則(**I**nterface Segregation Principle)
5. 依存性逆転の原則(**D**ependency Inversion Principle)

今回は後編として I, D の2原則をご紹介します!

https://qiita.com/gaky1201/items/1e8eed57b7c8a203f509

## 4. インターフェース分離の原則(**I**nterface Segregation Principle)

**インターフェースによって使用しないメソッドへの依存をさせてはならない。**

という原則になります。

元記事を表示

【超初心者】クラス-メソッドと疑似変数$this

# はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。

https://sls.ideal-growth.jp/12/lesson/310/exercise/991

## クラス-メソッドと疑似変数$this-
### 処理内容
MathOperationクラスに定義されているaddメソッドを呼び出す。addメソッドの引数には、それぞれプロパティの値とprocessメソッドに渡された引数の値を使用する。

### 解答・解説 のサンプルソース
変数名など一部変更しています。

“`PHP
class MathOperation
{
public $value = 10;

function add($value1, $value2)
{
echo $value1 . ‘ + ‘ . $value2 . ‘ = ‘ . ($value1 + $value2) . “\n”;
}

// process メソッドを追加
function process($value)
{

元記事を表示

PHP 8.4 初のリリース候補がリリース!新しいPHPリリースサイクル戦略が採用されました

## RC1 リリース

![PHP 8.4 RC1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5xgqth1q49i73agg14w.png)

PHP 8.4の初のリリース候補(RC1)がリリースされました。PHP 8.4-RC1は、PHP 8.4リリースサイクルにおける重要なマイルストーンであり、[PHP開発](https://support.servbay.com)ブランチから分岐し、機能凍結状態に入ります。

これ以降、PHP 8.4ブランチは公式リリース(GA)に向けてバグ修正のみを受け付けることになります。公式リリースは2024年11月21日に予定されています。初のGAバージョンであるPHP 8.4.0の前に、さらに3つの候補(RC2、RC3、RC4)がリリースされる予定です。

PHP 8.4は、新しいPHPリリースサイクル戦略を採用した最初のバージョンです。**2年間のアクティブサポート**の後に**2年間のセキュリティ更新**を受ける予定です。

## 新しいPHPリリースサイクル戦略

元記事を表示

【PHP】use宣言のグループ化

### Before

“`php

元記事を表示

【PHP】演算子の優先順位

変数`$hoge`が`null`だったら`true`を返したい処理を書いてたとき、
演算子の優先順位で少し詰まったので、備忘録として残します。

“`php
$hoge = null
return (bool) $hoge ?? true;
“`

これはtrueが返りそうですがfalseが返ります。
実は型キャスト演算子は、優先的に処理される部類の演算子です。
PHPのリファレンスによると、型キャスト演算子 → null合体演算子の順で評価されます。
[PHP: 演算子の優先順位 – Manual](https://www.php.net/manual/ja/language.operators.precedence.php)

なので、null合体演算子 → 型キャスト演算子の順で評価したいのであれば、
括弧でグループ化してあげて、以下のように優先順位を決めます。
“`php
$hoge = null
return (bool) ($hoge ?? true); // true
“`

元記事を表示

OTHERカテゴリの最新記事