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

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

XAMPPをインストールしたけど、立ち上がらない(Mac Book 編)

## MacBookでXAMPPが立ち上がらない・機能しない
MacbookでXAMPPをインストールにしたにもかかわらず、XAMPPが立ち上がらない場合の解決方法をまとめてみました!

## 参考サイト
私が解決するにあたって参考にしたサイトです。こちらも併せて確認するとばっちしだと思います👌

https://note.com/sharky_baby/n/n412d893b6db8

https://note.com/araisan_cu/n/ne839b4765935

## MacbookでXAMPPをインストールにしたにもかかわらず、XAMPPが立ち上がらない。

公式サイトからXAMPPをインストールしたけど、下記のようにXAMPPを立ち上げることができませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3673349/6f21f924-1541-cfa8-fd87-22b0a30585bf.png)

参考サイトをもとに以下の手順やってみると、無事解決しましたー!

元記事を表示

MacBookでXAMPPのMySQLが機能しない。。

## MacBookでXAMPPのMySQLが機能しない(Macbook編)
公式サイトからXAMPPをインストールしたけど、MySQLがSTOPになって機能しない場合の解決方法をまとめてみました!

## 参考サイト
私が解決するにあたって参考にしたサイトです。こちらも併せて確認するとばっちしだと思います👌

https://note.com/araisan_cu/n/ne839b4765935

## ターミナルを準備する
私はVScodeを利用していたのでVScodeでターミナルを立ち上げて、以下のように操作しました。

1.brew services listで自動起動を確認する。

“`
~$ brew services list
“`
2.私の場合は、**mysql started** と表示されていました。

3.以下のように、自動起動を止めます。

“`
brew services stop mysql
“`

4.XAMPPへ戻り(またはXAMPPを起動して)、XAMPPのMySQLのスタートボタンを押すと無事に起動できました!

以上!!

元記事を表示

PHPの中にHTMLを書いてその中にまたPHPを書く方法

## やりたかったこと
– よくある初心者用のサンプルコードを見ながら作っていましたが、**掲示板でマイページ**を作っているサイトは見付からず、**自分が投稿した内容だけを表示するマイページを作りたいな**と思って試行錯誤した内容を纏めたいと思います。

## PHPの掲示板でマイページを作成する
– というかタイトルだけ見ると「は?」ってなるかもしれませんが、私自身が一体どうやったらこの情報を手に入れられるんだと思い、ググっていた文字です…。やりたかったことを文字に表すとこの記事のタイトルのようになります。
– マイページというと自分の登録した内容、例えば「名前」「住所」「メールアドレス」「パスワード」などが表示されるものかもしれませんが、そうではなく、ひとこと掲示板で**自分が投稿した内容だけ**を表示したかったのです。あのアルファベットの某SNSのプロフィールのような感じで。
– もし諸先輩方でこちらの投稿を見て、「もっと綺麗に書けるよ!」という方法がございましたらご教示くださいますと幸いです。

## 動作環境など
– AWS EC2上にLAMP構成としています。
– Li

元記事を表示

タスク管理アプリ作成① 〜環境構築〜

### はじめに

今回、学習用に「タスク管理アプリ」を作成することになったので、Laravelをローカルで動作させる環境を作成することがこの記事の目的です。

### 使用言語や環境

▼ ローカル環境
・Composer
→ homebrew使用しインストール済

・Laravel
→ Composer使用し、タスク管理アプリ用のプロジェクトを作成

▼ 本番環境(ここは考え中なのでメモ)
・AWS
・ドメイン
・DNSサーバー
・WEBサーバー

### 環境構築手順
#### ① Laravelのプロジェクト作成
※composerをhomebrew経由でインストールしていたが、2023年11月にphp8.0のサポートを終了したらしい。brew updateしたらcomposerが動かなくなった。なので、php8.2をインストールしてPATHの指定・変更反映をしたら無事動くようになった。

“`
// brewコマンドでComposerをインストール
brew install composer
“`

参考記事↓
https://qiita.com/Sxun0325/it

元記事を表示

【Laravel】外部APIをスタブにして単体テストを実施する

外部APIに依存している機能を単体テストする場合、外部APIをスタブにしてダミーレスポンスを設定してテストをすることが一般的です。

今回、Laravelの単体テストにおいて外部APIに依存している部分があったのでLaravelの単体テストにおける外部APIのスタブ化について纏めました。

# 結論
– Http::fakeを使う事で外部APIとの通信をスタブに置き換えることができる
– 呼び出し順によって応答内容を変える場合はHttp::sequence()を使う
– Http::fakeは上書きができない

# 基本形
“`php
Http::fake([
‘/signin’ => Http::response([
‘status’ => ‘Success’
], 200),
‘*’ => Http::response([
‘status’ => ‘OK’
], 200),
]);
“`
Http::fakeにAPIのURLごとに応答内容をHttp::responseを使って設定すればよい。
ワイルドカードも使用可

元記事を表示

Laravelでマルチバイト文字数のカスタムバリデーションを作る

### 開発環境
– Windows 10 Pro(64bit)
– PHP 8.1.9 (cli) (built: Aug 2 2022 14:17:26) (ZTS Visual C++ 2019 x64)
– Laravel Framework 10.44.0

### マルチバイト文字数を取得する
PHPで文字数を調べる場合、strlen関数を使いますが、マルチバイト文字を使用する場合は、mb_strlen関数(**事前に、php.iniでextension=mbstringを有効にすること**)を使います。
ただ、絵文字などの場合、正しく1文字と認識できない場合があるので、今回は、grapheme_strlen関数(**事前に、php.iniでextension=intlを有効にすること**)を使っていきます。

### カスタムバリデーションを作成する
今回は、カスタムルールとして、『**指定したマルチバイト文字数以下**』であれば、OKという風にします。

以下のコマンドでカスタムバリデーション用のファイルを作成
“`powershell
php artisan

元記事を表示

PHPUnit10以降のstaticなdataProviderでもステートフルなケースに対応する

PHPunit10以降ではDataProvider関数はstaticが推奨になりました。
https://docs.phpunit.de/en/10.5/writing-tests-for-phpunit.html#data-providers
staticなので `$this` を使ったテストクラスの状態を参照できなくなります。

そもそもDataProviderはテストケース実行前に呼ばれるため、setUpで作成したデータを参照できません。

“`php:実行順序の確認
class ExampleTest extends TestCase
{
private int $expectValue;

protected function setUp(): void
{
parent::setUp();
echo “setUp called\n”;

$this->expectValue = random_int(0, 9);
}

#[DataProvider(‘data’)]
publi

元記事を表示

【Laravel】マイグレーション 任意のカラムを外部キー指定

例えば、usersテーブルがあり、そのテーブルを参照するpostsテーブルがあるとします。
Laravelでは、usersテーブルとpostsを紐づける外部キーは`user_id`と命名するのが一般的でしょう。

usersテーブルの`id`(主キー)とpostsの`user_id`を紐づけを行いたい場合のマイグレーション。
“`ruby:sample.php
Schema::table(‘users’, function (Blueprint $table) {
$table->id();
$table->string(‘name’);
});

Schema::table(‘posts’, function (Blueprint $table) {
$table->id();
$table->foreignId(‘user_id’)
->constrained()
->onUpdate(‘cascade’)
->onDelete(‘cascade’);
});
“`

しかし、例えばusersテー

元記事を表示

PHP(7.1.33) 学習 備忘録 – preg_replaceの”\\1″

とある案件でPHPを触れて、学んだことを書いておく。

# preg_replace

https://www.php.net/manual/ja/function.preg-replace.php

PHPの正規表現を使った置換`preg_replace`の置換後文字列に`\\1`というのが使われていましたが、知らなかったので調べました。
正規表現としては、`$1`と同じく部分置換をするときに使うものです。

“`php

“`
[実行結果](https://php-play.dev/?c=DwfgDgFmBQAkDOAXATgAgLyoOSE6GQXQyC1DKoP0MgtwyBlDFgNzTQBuAhsgPoAmArgLZgAUCKAShr80mHmGQBTAObMpYADYMAxpJ4AiAPQ98BAah5lyAzeoA06gDqWATKmsB

元記事を表示

LaravelのAtomic Locksを使って多重送信を防止する

## はじめに

#### 多重送信ができてしまう

ボタンを連打したり、リロードしたり、色々システム操作の中で、同じフォームが重複して送信されることがあります。

開発しているシステムでも、こちらの対策をしておかないと、unique制約のバリデーションなどをすり抜けた上で重複して登録されてしまいます。

多重送信の対策として、Laravel 10 の環境下でやってみたことをメモします。

## 多重送信に備えて
### その1 2回目以降のボタン無効化
ボタンの連打対応です。
JQueryで、ボタンが1回クリックされたらそのボタンは非活性にして、そのあとサブミットします。
これで連打されても2回目以降のリクエストは送られません。
フロントエンドの対応として一般的、かつ必須の方法かと思います。

“`php:blade.php

“`
(`$route` には操作したいControllerへのルート名を指定します)

元記事を表示

PHPerがRuby(Ruby on Rails)を約3年経験した結果

# はじめに
Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

今回はHubbleに転職して約3年経つので、振り返りの意味も込めてPHPerで一切Rubyを触ったことがなかった僕が、約3年Rubyを使った所感を書こうと思います!

# 筆者のサマリ
大学は電子情報で大学院は技術経営を学んでしました。大学院は21卒なので21卒で就活をして、サマーインターンでWeb開発を知り、PHPと出会い、Web開発の沼にハマりました。

しかし、大学院にいるよりも早く実践を積みたいと、大学院を中退し、20卒としてソーシャルゲーム会社に就職しました。
ソーシャルゲームということで、PHPをそのまま経験、その後受託系の会社に転職し、そこにはPHPerKaigiの運営にも携わっている方にPHPの真髄を叩き込まれました。

その後、自分が完全未経験のRubyで開発しているHubbleに入社しました。

# 結論
RubyもPHPも本質はなにも変わらないです。
これはその通りと言えば、その通りのこ

元記事を表示

Laravelでcontrollerから受け取った変数をViewで表示する

4月からエンジニアとして働く初心者です。

今回はLaravelでView(bladeファイル)にControllerから受け取った変数の中身を表示する方法をまとめてみます。

## ControllerからViewに変数を渡す
### ①viewメソッドの第2引数
– 単一の変数を渡す
“`php
public function sample() {
$value = 5;
return view( ‘sample.index’ , [ ‘value’ => $value ]); // [ ‘view側で使うときの配列/変数名’ => $設定した配列/変数名 ]の形。
}
“`
– 第2引数で渡すとき、一般には連想配列(`[ ‘キー’ => 値 ]` )にする
– 渡す変数は配列でも良い
“`php
public function sample() {
$fruits = array(
‘tomato’ => 100,
‘apple’ => 150,
‘banana’ => 50,
);
r

元記事を表示

【PHP】PHPで外部のサイトを読み込む方法

# はじめに
こんにちは! 中学2年生のWardHamamatsu67です! 今回は、PHPで外部のサイトを読み込む方法について説明したいと思います。
# コード
“`php

“`
こんな感じです。結構短めにできます。なお、今回読み込むサイトは一昨日紹介した気持ち悪い信号機のページです。
# 説明
“`php
$url = “file:///C:/xampp/htdocs/traffic_light.html”;
“`
この部分では、**$url**という変数を指定し、その中に、読み込みたいサイトのアドレスバーに書かれているURLを書きます。
“`php
$output = file_get_contents($url);
“`
この部分では、**$output**という変数を指定し、先程指定された$urlのデータ

元記事を表示

PHPの具体例で理解する「結合度」

## そもそも結合度とは
– 結合度はモジュール間の依存性を表す指標。
– 結合度は低ければ低いほどよい。
– 依存性が少なくなり、修正・拡張がしやすくなるため。
– 各モジュールが独立して、再利用しやすくなるため。

## 結合度には7つの種類が存在する。
![結合度高画質.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3660857/a7309ce2-c7be-17e5-f0c6-c84e12f1fe37.jpeg)

## 7種類の結合度の詳細

### 1 : 内部結合(Content coupling)
あるクラスが別のクラスの内部構造や状態に直接依存する結合。
#### 内部結合しているコード
“` PHP
class User
{
public $is_admin = false;
}

class Admin
{
public function promote(User $user)
{
$user->is_admin = tr

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~認可編~

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/2ab36bd082385f62cd61)の記事で、Flowにおける認証処理(Authentication)について書きました。
今回はFlowで認可処理(Authorization)を実装してみましょう。

# 注意
:::note warn
この記事は[前回の記事](https://qiita.com/nnhkrnk/items/2ab36bd082385f62cd61)の続きになっています。
まだご覧になってない方はそちらからご覧ください。
:::

# 実際に作ってみる
早速作ってみましょう。
前回はログインしたらTOP画面に遷移するという処理を実装しましたが、ログインしてなくても遷移が可能になっていました。
今回は、**TOP画面をログイン状態でないと開けない**という設定を追加してみます。

プロジェクト構成は以下です。

“`
Packages/
├ Application/
| └ Neos.Welcome/
| ├ Classes/

元記事を表示

PHP ストリーム型のファイルの操作

# ストリーム型のファイルへの書き込み

参考: [fopen](https://www.php.net/manual/ja/function.fopen)
参考: [fwrite](https://www.php.net/manual/ja/function.fwrite.php)
参考: [fclose](https://www.php.net/manual/ja/function.fclose)

– `fopen`, `fwrite`, `fclose` の3つセットで記述する

#### `.contact.dat`ファイルを作成しておく

#### `test.php`を作成及び編集

“`php:test.php

元記事を表示

PHP ファイル操作の基本(ファイル名型) 振り返り

# テキストファイルの読み込み

#### ファイル名型 (ファイルを丸ごと操作する方法)
– PHPの標準関数 `file_get_contents`関数を使用してみる

参考: [file_get_contents](https://www.php.net/manual/ja/function.file-get-contents)

`.contact.dat`ファイルを作成及び編集 `txt`でもよい

“`dat:contact.dat
あああ
いいい
ううう
“`

`test.php`を作成及び編集

“`php:test.php

元記事を表示

[Laravel] Windowsで文字化けしないCSVのエクスポート機能を作ろうとしたら、意外と詰まった話

# はじめに
個人でシステム開発の仕事をしています。
管理画面を開発しているときに、Windowsのエクセルでも文字化けしないようなCSVインポート機能を実装しようとしたんですが、
SJIS変換してもBOMをつけてもなかなか解決できなかったので、その解決方法を備忘録として残しておこうと思います。

## 開発環境
– php 8.2
– laravel 10
– docker

# やりたいこと
header_1 | header_2 | header_2|
—— | —— | ——
body_a1 | body_a2 | body_a3|
body_b1 | body_b2 | body_b3|

上のようなCSVをエクスポートし、macでもwindowsでも文字化けせずにCSVを表示したい。

:::note info
– windowsではexcelで開くことを想定しています。
– headerはソース内で定義し、bodyはMySQLから持ってきた値です。
:::

# 試したこと
## SJIS-winに変換(うまくいかなかった)
まずは、単純にUTF-

元記事を表示

PHP(7.1.33) 学習 備忘録 – isset, is_null, empty

とある案件でPHPを触れて、学んだことを書いておく。

# 変数チェック

変数を宣言・定義しているか、NULLかなどをTRUE,FALSEで返してくれる関数を調べたのでまとめておきます。

PHPの前提として、NULLと変数宣言をしただけのものは基本的に同じです。

“`php
$defNull = NULL;
$defOnly;
“`

## is_null

https://www.php.net/manual/ja/function.is-null.php

:::note info
`is_int`や`is_string`など型ごとにチェックする関数があります。
:::

– 変数が宣言されていない
– NULLで定義されている

ならば、`True`が返ってきます。

“`mermaid
flowchart LR
s([Start])
t([True])
f([False])
d+nn{未宣言
OR
NULL}
s –> d+nn –>|Yes| t
d+nn –>|No| f
“`

ただし、未宣言の場合はおそらく*Notice*が出てくると思います。

元記事を表示

PHPで”Hello, World!”を表示させる方法を詳しく解説!初心者向けの手順とコード例あり

PHPを利用して **`「Hello, World!」`** を表示する方法について詳しく説明します。この手順は、PHPを初めて学ぶ方や、基本的な構文を確認したい方に適しています。

まず、ブラウザで **`「Hello, World!」`** を表示するためのPHPコードを紹介します。以下の手順に従ってください。



## PHPファイルを作成する

まず、テキストエディタ「VScodeなど」を開き、新しいファイルを作成します。このファイルの拡張子は **`.php`** になります。例えば、 **`hello.php`** という名前で保存します。

## PHPコードを追加する

元記事を表示

OTHERカテゴリの最新記事