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

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

laravelのassetヘルパ関数

## laraveのassetヘルパ関数について
参考URL:https://readouble.com/laravel/9.x/ja/helpers.html#method-asset

### 概要
– asset()関数はlaravelのヘルパ関数
– asset()は、publicフォルダのディレクトリパスを返す

### 使い方
“`
asset(‘storage/’ . $post->image)
“`
これでpublicディレクトリ内のstorageという
ディレクトリの中のファイルにアクセスする。
つまりassetの中にpublicの中のファイルパスを書けばOK

元記事を表示

ループの制御

## はじめに

ループの制御について整理する。

### break

現在のループを強制的に中断する。
breakはifと合わせて使うのが一般的。

“`php:break.php
1000) { break; }
}
print “合計が1000を超えるのは、1~{$i}を加算したときです。”
//合計が1000を超えるのは、1~45を加算したときです。
“`

### continue

現在の周回だけをスキップし、ループそのものは継続して実行する。

“`php:continue.php

元記事を表示

可変変数のおさらい

業務でとあるシステムの改修作業をしていたら$$がついた関数を見つけて頭の中が?になったので自分の中で整理してみる。

## $$は可変変数と言うらしい
恥ずかしながら今まで実務で可変変数を定義しているコードを見たことがなかったのでシステムを作った人が打ち間違えたのかと思っていました(ほんとに恥ずかしい)

## 可変変数ってなに?
変数の名前を他の値で作ることができる

### 簡単な使い方
まず変数を一つ用意
“`
$hoge = “qiita”
“`
次に$hogeの値を使って新しい変数名を作る
**(これが可変変数)**
“`
$$hoge = “PHP”
“`

既にhogeという変数には”qiita”という値が入っています。
つまり
“`
$$hoge = $qiita
“`

と言うことになります。
$qiitaという変数が作られ、その中に”PHP”という値が格納されていることになります。

### 出力
“`
echo $qiita; // 出力: PHP
“`

## メリットとデメリットは
**コードが簡潔になる**
似たような変数を定義しなくてよい

元記事を表示

FuelPHP における ORDER BY での条件指定

# 概要
FuelPHP では基本的に FuelPHP が提供している Query Builder を用いて SQL を作成する
その SQL を作成する中で ORDER BY 句の設定でハマったのでメモを残す

やりたいこととしては一部の ID のみを検索上位に表示、それ以外を異なる Column で並べたいといったもの

e.g.
“`
SELECT *
FROM `target_table`
WHERE `condition` = true
ORDER BY `target_table`.`id` = 1 DESC, `target_table`.`other_column` ASC;
“`

# 環境
PHP: 8.0.30
FuelPHP: 1.8.2
MySQL: 5.7.41

# 結論

Query Builder の `order_by()` の第一引数に条件を含めた形で `DB::expr()` 経由で値を渡す
“`
$rows = DB::select()
->from(‘target_column’)
->where(‘condition’

元記事を表示

single.phpに関連記事を表示させる方法について

single.phpに関連記事を表示させる方法についてまとめます。

## 実装条件

– uncategorizedのカテゴリーに所属する投稿を表示
– ランダムに表示
– 表示中の投稿を除く
– 表示件数は8件

“`php
‘post’, //投稿タイプ
‘category_name’ => ‘uncategorized’, //投稿カテゴリ
‘posts_per_page’ => 8, //8件表示
‘orderby’ => ‘rand’, //ランダムに
‘post__not_in’ => array($current_post_id) //現在の投稿IDを除外
);

$the_query = new WP_Query($args);
?>

have_posts()) : ?>

元記事を表示

Symfonyで制作したwebアプリをエックスサーバーにデプロイすることは可能でしょうか?

Symfonyで制作したwebアプリをエックスサーバーにデプロイすることは可能でしょうか?herokuのようにgitと連携して行うことは可能でしょうか?その場合の方法を教えていただければと思います。よろしくお願いいたします。

元記事を表示

参照渡しと値渡し

## はじめに
参照渡しの理解が曖昧だったため、値渡しと比較しながら整理する。

## 参照渡しと値渡しの違い

二つの違いの前に・・・

### そもそも変数とは

値の格納先に対して付けられた値札のようなもの

値を格納するのはメモリの役割。しかし、コードに意味のない番号を記述するのは見た目的にわかりにくいし、タイプミスの原因にもなる。
そこで、人間がわかりやすいように名前をつけるようにした。それが変数。

### 値による代入

値による代入とは、メモリ上の値を別のアドレスにコピーすること。
代入した変数と代入された変数は別物なため、元の変数が変更されても、代入された変数が影響を受けることはない。

“`php:ref_val.php

元記事を表示

【PHP入門】コメント・コメントアウトの使い方を解説する方法とコーディングのポイント

## **PHP入門:コメント・コメントアウトの使い方を解説**

PHPプログラミングを始めたばかりの方にとって、コメントの使い方は非常に重要です。この記事では、PHPでのコメントとコメントアウトの正しい使い方を解説します。また、コーディング時に注意すべきポイントも合わせて紹介します。



## コメントの使い方
PHPでは、2種類のコメントがあります。**1行コメント**と**複数行コメント**です。

– 1行コメントは`「//」`を使う
– 複数行コメントは`「/* */」`で囲む

【例】

“`php
// これは1行コメントです

/*
これは
複数行コメントです
*/

元記事を表示

結局php-fpmってなに?

# FPMってなんの略
たぶん初学者がPHPでなにか開発したい、そうだdockerだとなったときにまず出てくるこの言葉。いったいなんなのでしょうか。よくわからずに使ってる人も多いとは思いますが、最初にこのFPMとはなんの略でしょうか。

“FastCGI Process Manager“

そこで疑問が、FastCGIって何?

# そもそもCGIって何?
“`Common Gateway Interface“`

HTMLはあくまで文書です。ですので動的に画面上の数字を変えたり表示される画像を変更したりはHTML単体ではできません。HTML単体ではできることはだいぶ限られてきます。

やっぱり動的にやりたいじゃないですか。商品をカートに追加するとか、購入ボタンぽちーって押したら購入完了になるとか。

そこで登場するのがCGI
込み入った話はともかくとして、WEBサーバ側から何かしらのプログラムを呼び出して実行した結果を返す仕組みのことをCGIといいます。

# ただCGIには問題があって・・・
1. リクエストごとにCGIプロセスを立ち上げる必要がある
1. つまり毎

元記事を表示

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も本質はなにも変わらないです。
これはその通りと言えば、その通りのこ

元記事を表示

OTHERカテゴリの最新記事