- 1. FuelPHP における ORDER BY での条件指定
- 2. single.phpに関連記事を表示させる方法について
- 3. Symfonyで制作したwebアプリをエックスサーバーにデプロイすることは可能でしょうか?
- 4. PHP学び直し
- 5. 【PHP入門】コメント・コメントアウトの使い方を解説する方法とコーディングのポイント
- 6. 結局php-fpmってなに?
- 7. XAMPPをインストールしたけど、立ち上がらない(Mac Book 編)
- 8. MacBookでXAMPPのMySQLが機能しない。。
- 9. PHPの中にHTMLを書いてその中にまたPHPを書く方法
- 10. タスク管理アプリ作成① 〜環境構築〜
- 11. 【Laravel】外部APIをスタブにして単体テストを実施する
- 12. Laravelでマルチバイト文字数のカスタムバリデーションを作る
- 13. PHPUnit10以降のstaticなdataProviderでもステートフルなケースに対応する
- 14. 【Laravel】マイグレーション 任意のカラムを外部キー指定
- 15. PHP(7.1.33) 学習 備忘録 – preg_replaceの”\\1″
- 16. LaravelのAtomic Locksを使って多重送信を防止する
- 17. PHPerがRuby(Ruby on Rails)を約3年経験した結果
- 18. Laravelでcontrollerから受け取った変数をViewで表示する
- 19. 【PHP】PHPで外部のサイトを読み込む方法
- 20. 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学び直し
## 目的
PHPを一から学び直す。
理解があやふやなところだけを重点的に整理していく。
参考図書:独習PHP(第四版)## 参照渡しと値渡しの違い
二つの違いの前に・・・
### そもそも変数とは
値の格納先に対して付けられた値札のようなもの
値を格納するのはメモリの役割。しかし、コードに意味のない番号を記述するのは見た目的にわかりにくいし、タイプミスの原因にもなる。
そこで、人間がわかりやすいように名前をつけるようにした。それが変数。### 値による代入
値による代入とは、メモリ上の値を別のアドレスにコピーすること。
代入した変数と代入された変数は別物なため、元の変数が変更されても、代入された変数が影響を受けることはない。“`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も本質はなにも変わらないです。
これはその通りと言えば、その通りのこ
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