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

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

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

# はじめに
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

元記事を表示

OTHERカテゴリの最新記事