PHP関連のことを調べてみた2023年02月16日

PHP関連のことを調べてみた2023年02月16日

連想配列のソート(PHP)

**連想配列**のソートに関するサンプルプログラムを実装しました

“`PHP
$colors = [“red” => “赤”,”blue” => “青”,”yellow” => “黄”];

// 要素をキーで昇順に並び替える
ksort($colors);

foreach($colors as $key => $value){
echo “

{$key}は日本語で{$value}です”;
echo “
“;
}

// 要素をキーで降順に並び替える
krsort($colors);

foreach($colors as $key => $value){
echo “

{$key}は日本語で{$value}です”;
echo “
“;
}
“`

Keyを昇順に並べるには***ksort***関数、降順に並べる場合は***krsort***関数を使います。

元記事を表示

MAMP Laravel MySQLで簡易SNS作成

### 背景・前書き

Laravelもphpも触ったことのない超初心者で、Laravelの仕様(仕組みやライフサイクルなど)を全く理解しておらず、チュートリアルすらやったことがないですが、実際に何かを作ることでなんとなくの雰囲気を把握するために挑戦しました。

基本的に以下のサイトを参考に実装いたしました。こちらの記事をベースに、Laravel9、また自分の環境との差分を備忘録的に書いています。

https://qiita.com/n_oshiumi/items/8993ab268209d19f052e

また、Laravel8.x以降では仕様が変更している部分が多く、時系列的に遭遇したエラーを記載していますので、一度本記事を全て読んでから、私と同じ轍を踏まないようにすることをおすすめします。

Javaなどを先に学んでいる方は理解しやすいと思いますが、MVCモデルとなっているため、同様にModel,ControllerなどやView(画面部分)を作成する流れになります。
ただJavaのプロジェクトとは異なり、ルーティングを行い、URLの飛び先を指定します。

https://co

元記事を表示

MAMPを利用してLaravelとPHPの環境を構築したい

## 前書き
表題を実現したく、実際に遭遇したエラーなどを時系列的に書きました。

環境が構築できたら、下記の簡易SNSシステムの作成を行なっていますので、興味のある方はそちらもご参照ください。

https://qiita.com/pocky_tabemasu/items/50490705d2424236c718

## 環境

本記事投稿時点(2023/2)での最新バージョンで構築
・Mac M1
・Laravel 9
・php 8.2.0
・Composer version 2.5.1
・Workbench version 8.0.19 (ターミナルでの操作もできるためなくてもいいです。これは最新ではありません※後述)
・エディタ : Visual Studio Code

## 手順
### MAMP公式サイトから手順通りインストール
https://www.mamp.info/en/mamp/mac/

### Composerインストール
今回は2.5.1をインストール
![スクリーンショット 2023-02-03 15.34.34.png](https://qiita-

元記事を表示

php artisan serveしたのに、エラー出てしまいました。composer installもエラーだった。

ある日、PHPのLaravel入門の本(通称青本)をもとに環境構築しているときのことでした。
`php artisan serve`を叩いたところ、こんなエラーメッセージが、、
※DeskTopに`laravelapp`という名前でプロジェクト作成しています。
“`
PHP Warning: require(C:\Users\ユーザー名\Desktop\laravelapp/vendor/autoload.php): Failed to open stream: No such file or directory in C:\Users\ユーザー名\Desktop\laravelapp\artisan on line 18
PHP Fatal error: Uncaught Error: Failed opening required ‘C:\Users\ユーザー名\Desktop\laravelapp/vendor/autoload.php’ (include_path=’.;C:\php\pear’) in C:\Users\ユーザー名\Desktop\laravelapp

元記事を表示

Laravel モデルwhere+カラム名メソッドの動きを理解しよう!

# はじめに
こんにちは!!
ミャンマー人エンジニアのピェッピョーアウンです。
私はミャンマーの大学を卒業して、新卒で日本の企業に就職し、日本での社会人として、5年目が終わり、6年目を向かいました。
エンジニアとして、LaravelとCodeIgniterといったPHP言語を中心にしたWeb開発が多かったのですがこれまでの日々の経験や勉強になったことなど投稿していこうと思っています。
今回はLaravel モデルでのwhere+カラム名メソッドについて、勉強になったことをシェアさせていただければと思います。

# where+カラム名メソッドとは

laravelのモデルでwhere+データベースのカラム名のメソッドを使ったことありませんか?
例えば、`User`モデルの場合、データベースの`users`テーブルには`name`と`email`カラムがあるとしたら、`whereName`、`whereEmail`のようなメソッドが定義されてなくても使えるようになっています。
以下、PHPDocで作成された、Userモデルを見てみましょう。

“` php:User.php

元記事を表示

Lappinna技術部始動!

# 初めに!
皆さん始めまして!Lapinna技術部のしゃちょ~(仮)です!
このアカウントについての説明をさせていただきます!(やるとは言っていない)

![1_hokkaidou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163792/9380c14f-17fd-3110-bf6c-46e3f7d62c65.png)

※上記イラストに深い意味はありません。よろしくお願いいたします。

## 記事概要
このアカウントは、初心者向けの記事を投稿するアカウントとなっております。
現職でIT企業に勤めているプロのエンジニアが中心となって記事を上げていく予定となっております!(頑張ってね!

# 投稿予定
## AI関係(機械学習・深層学習/ニューラルネットワーク)
・AIに必要な画像処理技術をまとめてみた(仮)

## WEB開発(PHP/Laravel・HTML・CSS・JS)
・プロのエンジニアが初心者のためのWEBページ作成指導書作ってみた(仮)

## ゲーム関係
・Unityでインベーダー

元記事を表示

Docker環境でPHPのエラーログを出力する

# 事前準備としてコンテナ名を確認

docker ps

# ログを確認したい時

docker logs -f <コンテナ名>

# アクセスログを確認したい時

docker logs <コンテナ名> -f 2>/dev/null
※ 2 はエラーという意味で、/dev/null は 破棄する という意味。エラー出力を破棄する、という意味になる。

# エラーログを確認したい時

docker logs <コンテナ名> -f 1>dev/null
※ 1 は標準出力のことになり、この場合は 標準出力を破棄する、という意味になる。

注意: 上記では dockerコマンドを使用しているが、docker-composeコマンドでもログを取れる。
その場合は docker ps などとコンテナを調べずにログが取れるので簡単。
しかしダメ。採用していない。
理由は、アクセスログとエラーログが混ざって出力されるため、切り分けしづらいから。
それでも良い場合だけ使う。
でなければ、ログだけ見たいとかならば使わない。

dockerの場合、正常系とエラー系の二種類しか分離でいない。

元記事を表示

PHPでリダイレクトする

# 生のHTTPヘッダを送信する

$header:ヘッダ文字列

“`
header($header)
“`

リダイレクトするにh Location: ヘッダを付与する。
当然ながら、リダイレクトさせると、その後にコードを記述していても実行されない。
しかしこれまた当然ながら、条件文ならば、条件に合わずリダイレクトされなければその後のコードは実行される。

“`
header(“Location: https://www.mysite.com/”);
“`

元記事を表示

PHPで投稿日時から現在までの経過時間を表示するための関数の書き方

## 投稿日時を表示する方法
Twitterみたいに投稿から経過した時間を表示すための関数をPHPで書いていきます。

### 表示例
* 現在時刻が「2023-01-01 00:00:00」だった場合
* 2022-12-31 23:59:50 ->10秒前
* 2022-12-31 23:59:00 ->1分前
* 2022-12-31 23:00:00 ->1時間前
* 2022-12-30 00:00:00 ->1日前
* 2022-11-30 00:00:00 ->2022年11月30日

### 手順
`convertToDayTimeAgo`という関数を作成し、引数の`$datetime`に「2023-01-01 00:00:00」のような日時と時間を指定した文字列が挿入される想定です。

“`php:php
/**
* 指定した日時からどれくらい経過したかを取得
* @param string $datetime 日時
* @return string
*/
function convertToDayTimeAgo(s

元記事を表示

formの値(連想配列)を受け取ってデータベース(MySQL)へ保存するまでの流れまとめ

# HTML、、ライブラリ取得用php、.env、使い回し用php、DB保存用phpを作成

# HTML
formの項目ごとにdivタグで囲む。
labelタグのfor要素と、inputタグ等のname要素が紐付いている。
id要素は複数の値があるタグ(radioやselect)で個別化できる。
昔と違い、今はsubmitはbuttonタグがあって楽。

# ライブラリ取得用php
使用するライブラリをPHP Composerが管理しており自動生成。
PHPファイルの冒頭でrequireして本ファイルを呼び出す。

# 環境変数を登録した.envファイル
DB接続情報が漏洩するとデータが盗まれてしまう。セキュリティのため、DB接続情報は環境変数化する。
PHPファイルでDB接続記述をする際、環境変数を記述するためDB接続情報の中身は見えない。

“`
DB_HOST=”mydb”
DB_USERNAME=”myuserame”
DB_PASSWORD=”mypassword”
DB_DATABASE=”mydatabase”
“`

# 使い回し用php
ライブラリをrequir

元記事を表示

【Docker環境】.envファイルに保存したDB接続情報の環境変数を用いてデータベースへ接続し、HTMLのformから受け取った値をDBへ保存する

# Dockerをスタンバイ

## Dockerアプリを起動

## コードのディレクトリへ cd で移動

## docker-composeを開始
“`
docker-compose up
“`

# HTMLを書く

## formの項目ごとにdivタグで纏める
例1
“`


“`

例2
各ラジオボタンはid名で区別
“`


元記事を表示

【転職活動】面接で聞かれたこと書いてくで(前半)

## この記事を書こうと思ったきっかけ

自分の整理のためと皆さんの参考になればという思いで記載します。
最近やっと書類選考を通過しまして、面接にこ漕ぎつけましたので
その会社でどんなことを聞かれたか書いていきます。

エンジニアになるべく転職活動中ですが、
某転職サイトで2022年12月ごろから30社以上応募をして
2023年2月にようやく1社書類通過しまして面接してくれる会社が現れました。

## まずは当方のスペックから。

現在無職。
前の職場では8年くらい働いてました。

ITと全然関係ない業界で事務してました。
2022年8月末に退職、現在に至るまで無職。

エンジニアになりたいのですが業務未経験です。
再就職に向けて2022年12月から重い腰を上げて就職活動を開始しました。スキルアップのため2022年3月からプログラミングスクールに通ってます。PHP、JavaScript、JQuery、HTML、CSSを勉強中。

実力はまだ初級レベルです。
IT業界、全くゼロからのスタートです。
IT系の仕事で即戦力にはなるにはまだたくさん勉強が必要です。

## 面接を受けた会

元記事を表示

Docker版LaravelでmySQLからSQliteにデータベース変更してみた

# LaravelでSQliteを導入するのにめちゃめちゃ苦労したお話
Laravelの参考書でSQliteを使わなければいけなかったのですがデフォルトの環境がmySQLになっていました。

[Docker版Laravelはこちらの環境を使わせていただきました](https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4)

Laravelの環境はサクッとできたのですが、データベースがmySQL!
これをSQliteにということで3日ほど苦戦してしまいました。

### 環境設定でググりまくりました
とにかくDockerでやりたかったのでdocker-compose.ymlファイルやDockerfileをググって探しまくりましたが、どこにも見つかりません。

ひとまず直感(爆)でdocker-compose.ymlファイルのDB関連すべてコメントアウト。
“`yml
environment:
– APP_DEBUG=${APP_DEBUG:-true}
– APP_ENV=${APP_ENV:-loc

元記事を表示

SQLのdeleteを死ぬほど楽にする関数を作った

## はじめに
省略。

## コード
“`php
prepare(“DELETE FROM $table WHERE id = ?”);
$stmt->execute([$id]);

if ($stmt->rowCount() == 1) {
echo “Record deleted successfully”;
} else {
echo “Record not found”;
}
} catch (PDOException $e) {
echo “

元記事を表示

Laravelとvite

走り書きメモ
・laravelでviteを使うことになった場合は
resouces/views/app.blade.phpでassetやmixじゃなくて
`` ⇒ @vite(‘resources/sass/app.scss’)
`` ⇒ @vite(‘resources/js/app.js’)

・vite.config.jsの

plugins: [
laravel({
input: [
‘resources/css/app.css’,
‘resources/js/app.js’,
‘resources/sass/app.scss’,//念のため追加
],

元記事を表示

【Laravel】既存テーブルに好きな数のカラムを追加する

# はじめに
今回は、Laravelのマイグレーション機能を利用し、既存テーブルにカラムを追加する過程で、調べたことをまとめました。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
以下内容についてアウトプット
– Artisan make:migrationコマンド
– マイグレーション機能
– カラムのデータ型

# この記事の内容

1. マイグレーションファイルの作成
2. テーブルの定義
3. カラムのデータ型

# 1. マイグレーションファイルの作成
Artisan make:migrationコマンドを使用して、マイグレーションファイルを作成します。

**Tips :**
– マイグレーション名は任意
※クラス名と被るとエラーになる

– 既存のテーブルに変更を加える場合、 `–tableオプション` でテーブル名を指定する

– TIMESTAMP型のカラムを追加する場合、 `nullable()メソッド` を使ってnull許容にする必要がある
※nullを許容し

元記事を表示

docker環境のローカルで、PHPで作成したHTMLファイルをブラウジングする際のURLの意味

# docker環境もXAMP等と同じく、localhostでブラウジングできる

## トップページのURL

“`
http://localhost:50080/
“`

上記URLのlocalhostは自身のパソコンを指す。
50080の部分はポート番号を指し、何のアプリケーションを指すか?を示している。
この番号はapacheであり、これでdockerのappコンテナ内のapacheにアクセスしていることになる。
その設定はdocker-compose.ymlファイルに記述してある。
以下、その記述箇所

“`
ports:
– “50080:80”
“`

上記の :80 の箇所はapacheがデフォルトで決めてある番号で、URLにはここまで記述しなくてもapacheが起動するようになっている。

元記事を表示

SQLでのinsertを死ぬほど楽にする関数を作った。

## INSERT、めんどくさいですよね?
あのプリペアドステートメントとか、苦しくて苦しくてやっていられるもんじゃあありません。
そこで、SQLでinsertを死ぬほど楽にする関数を作りました。
一応、セキュリティーを考えているつもりですが、何か問題点があったら教えてください。

## コード
“`php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$keys = array_keys($insert_data);
$values = array_values($insert_data);

元記事を表示

簡単な料金計算をValueObject化してみる

# この記事 is 何?
DDDの学習で参考書籍を読み、ValueObjectの実感を得る為、記事に残しました:v:

## 参考図書
[良いコード/悪いコードで学ぶ設計入門](https://gihyo.jp/book/2022/978-4-297-12783-1)

## 注意点
`Amount` や `Rate` といった抽象的な命名は本でも触れていますが、可能な限り避けたほうが良さそうです。

## よくあるコード(今回の悪魔 :smiling_imp:)
“`php
// 金額
$amount = 1200;
// 税率
$rate = 1.10;
// 請求金額
$commission = $amount * $rate;
“`

## 金額をValueObject化してみる

“`php
Class Amount {
// private int $amount = 初期値を暗黙的に宣言
// 8.1 で readonlyが付与できるので
// public readonly int $amount となり getterも不要
pub

元記事を表示

Laravel 便利な関数 ライブラリー

# Laravelでよく使う便利な関数orライブラリー

Laravelでよく使う便利な関数orライブラリーを紹介していきます。

## パスワードのハッシュ化
“`
Controller

use Illuminate\Support\Facades\Hash;

$mymy->password = Hash::make($request->password);
//下記のようにランダムにハッシュ化される
//$2y$10$c0XnxIoqscqkkO4vxvdyxeXF6aLSxZOKR.Ye4fWhBlhiHulhxg1Ju

“`

## Carbon ライブラリー
Laravelに標準で搭載されているライブラリーでcreated_atやupdated_atはCarbonインスタンスとして取得されます。

Carbonをcreated_atを組み合わせると

#### 2023-02-13 16:08:00
### ↓
#### 22時間前
と変更することが可能です!

記述方法
“`

{{$my->created_

元記事を表示

OTHERカテゴリの最新記事