PHP関連のことを調べてみた2022年09月28日

PHP関連のことを調べてみた2022年09月28日

未経験からエンジニアになって爆速で技術を習得するナレッジ

## はじめに
皆さんこんにちは。
今回は、約半年前にアップした、【実務未経験者がバックエンドエンジニアとして基礎を固めるためのナレッジ】に次いで、
実務未経験者がバックエンドエンジニアとしていかに早く技術を身につけていくかのナレッジについて少し書いていこうと思います。

早いもので、
現在の会社に入社して半年以上が経過しました。

ようやくではありますが、研修を経て、社内案件に少しずつではありますが参画させていただいているような状況です。

実務未経験で、勉強してきた言語も今と違う。
(もともとRubyを独学で学んでおり、現在はPHPを書いています。

そもそも、WEBサービスをつくることにウェイトを置きすぎていたゆえ、
基礎をほぼほぼ理解しないで独学でサイト作成をしていました。

なので基礎力はほぼ0。

あるのはやる気だけ、そんな感じでスタートしましたね。

詳しくは、過去記事を是非御覧ください。
[未経験からエンジニアになりました【実務未経験者がバックエンドエンジニアとして基礎を固めるためのナレッジ】](https://qiita.com/yastinbieber/items/

元記事を表示

正規表現のメモ PHP

## 正規表現とは
文字の集合を一つの文字列で表現する方法です。

簡単に言うと抜き出したい文字列だけとってくるということです。

例:電話番号は000-0000-0000におかけください。
みたいな文章があったとして 電話番号は000-0000-0000におかけください。
赤文字のみデータとして取得したい場合などに正規表現を使って取得します。

## 具体例
正規表現は様々なパターンがあるのでいくつかのみパターンを表示します。
“`
\d{2,4}-\d{2,4}-\d{4} 電話番号取得の正規表現
[0-9]     半角の数字を検索
[ぁ-ん]    全角ひらがなを検索
[ァ-ヶ]    全角カタカナを検索
([^”]*) 1区切り全て表記
([\s\S(.*)]*) 全て表記
“`

## 利用ツール
実際に取得できる文字を確認できるツールを以下に貼っておきます。
※正規表現チェッカーは他にもたくさんあるので使いやすいものを使えばよい
http://okumocchi.jp/php/re.php

## まとめ
正規表現は

元記事を表示

PHPカンファレンス2022参加した!

# オフライン参加しました

各社システムで使用されているPHP周辺の話を聞くのはとても新鮮で、1日目の一部のみの参加ではありましたが良い経験でした。
開催有難うございます。鉄は熱いうちに打て、という事で一部箇条書きでの投稿お許し下さい。見にくいかもです…スミマセン。

# ****17年続くWebサービスを改善する 〜新卒2年目からみるカラーミーショップ〜****

https://fortee.jp/phpcon-2022/proposal/6669e288-563e-49c5-be45-3871c730b6ab
– 一つ一つ丁寧に説明頂けた
– そのおかげで自分の中に落とし込めました
– とても聞きやすい発表でした

## Webアプリケーションレイヤにおける改善の取り組み
**[@yammerjp やんまーさん](https://twitter.com/yammerjp)**

– 「漸進的に」がキーワード、まさに「漸進的に」取り組まれている様子に全私が(完璧やん…。)となった
– 完璧な裏側には色んな人のアイデアや失敗もあったのかしら、なんて想像を膨らませた
– 是非機会があ

元記事を表示

PDOException(code: 0)でつまづいた話

# PDOException(code: 0)

PHPでサーバーを立て、接続したところInternalServerが発生。
ログを確認するとPDOException(code: 0)とのエラーログ。

どうやら、MySQLとの接続がうまくいってないらしい。

## 環境

– Ubuntu18.04
– php 8.0.23

## 試したこと

### 設定の確認

.envファイルの確認。DB設定が間違っていないか確認。

### Install package

“`shell
sudo apt-get install php-mysql
“`

### PHP driverの確認
以下のコードを実行して単純にドライバがないのかの切り分け。

“`php
getMessage(

元記事を表示

PHP M1 Mac 環境構築 Mamp Composer

# M1 MacでPHP始めたい人向け
M1 Macだと参考通りいかなかったので、これから始めたい人のためにまとめてみました。
前提条件としてHome brewが導入してあると想定して説明します。

# 1 Mampを導入しよう!
ここのurlからfree downloadをして下さい。
https://www.mamp.info/en/windows/

![スクリーンショット 2022-09-27 16.34.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708236/ea275011-b4bf-d6e3-c7dd-e97b08a708aa.png)

押していただくと、この画面になります。
M1 Macを選択してダウンロードしましょう。
![スクリーンショット 2022-09-27 16.39.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708236/7aa03088-f5b8-493a-c89e

元記事を表示

初学者でもカンファレンスの現地参加は怖くないよというお話【phpcon2022】

今年になって、技術イベントがようやく現地開催されるようになってきました。
コロナ禍でエンジニアになった自分が、初めてカンファレンスにオフライン参加したところとてもよかったので、
「新人さんもぜひ参加してほしい!」という気持ちで書いたポエムです。

## 筆者について
SE3年目ですが上流に関わることが多く、技術に関してはジュニアかそのちょっと上くらいです。
PHPに関しては、業務でLaravelを利用しています。(逆にノーマルのPHPはほとんど書いた経験が無い)

## そもそもPHP Conference Japan とは
PHPカンファレンスは1999年から実施されている、PHP関連の技術をテーマを主とした技術者イベントです。
公式サイトに以下の記載があるように、PHPユーザーの方々が自分の発表したいと思ったテーマで発表に応募してらっしゃり、
実際に提案が通った方々の発表を聞くことができる場になっています。
今年は9/24, 25の土日2日間の開催でした。
[Youtubeにアーカイブ](https://www.youtube.com/c/PHPConferenceJapan/p

元記事を表示

Dockerで構築したpostgresDBにlaravelでmigration

# 目標
Dockerで構築したpostgresDBにlaravelでmigrationする

## 前提
– Dockerの環境構築は省略
– [postgresDBの環境構築](https://qiita.com/Yatsushi009/items/3d0932b89c51b8b05537):省略

## 環境
– Windows10 wsl2 Ubuntu
– Docker version 20.10.17, build 100c701
– postgresql14
– adminer 4.8.1
– laravel9
– Composer version 2.3.7
– PHP 8.0.12 (cli) (built: Oct 19 2021 11:21:05) ( ZTS Visual C++ 2019 x64 )
※xampを用いてインストール

# 作業手順
1. laravelのプロジェクトを作成
“`
composer create-project laravel/laravel:^9 [project_name]
“`
1. .envファ

元記事を表示

【PHP】PHPで配列操作を極めたい

# コード
“`PHP
[1,2,3],’b’=>[4,5]] as $key => $array){
echo $key,’=’;
foreach($array as $n){
echo $n;
}
echo PHP_EOL;
}
“`

# 結果
“`javascript
a=123
b=45
“`

元記事を表示

三項演算子とは?

この記事では
php7.4.21
Database server: MySQL Version 5.7.34
を使っています。

三項演算子を使うことで、if分を簡略化することができる。
例:

if分の場合
$array[
‘key’ = 10,
];

if(isset($arry[‘key’])){
$arry[‘key’] = *10;
}else{
$arry[‘key’] = 1;
}

三項演算子を使った場合
$array[
‘key’ = 10,
];
$arry[‘key’] = isset($arry[‘key’]) ? $arry[‘key’] * 10 : 1;

三項演算子を使うと、if分の箇所が1行に簡略化できた。
どこにどの値が入ってるのかは、以下の通り。

値の出力先 = 条件式 ? Trueの場合の値 : Faulseの場合の値;

配列の初期化や変数の初期化の際によく使われる。

元記事を表示

【Laravel】特定のページのみログイン後、直前のページにリダイレクトさせる方法

特定のページからログインページに遷移してログインした時に、**元のページ(ログインページに遷移する前のページ)** にリダイレクトさせる方法を書いていきたいと思います。

## 直前のページに戻る方法

まず、ログイン後に直前のページに戻る方法ですが、それは下記の記事が参考になります。

[【Laravel】ログインした後、固定ページに飛ばさずにログインボタンを押した画面に戻りたい。 – Qiita](https://qiita.com/nekyo/items/f179875a8bcfba671785)
こちらの記事では`$_SERVER[‘HTTP_REFERER’]`を使って直前のURLを取得していますが、laravelで用意されている`url()->previous()`を使って直前のURLを取得することも可能です。

“`php:LoginController.php
/**
* Show the application’s login form.
*
* @return \Illuminate\Http\Response
*/

元記事を表示

PHPのフックってなんぞ(アクションフック編)

マークアップも上達し、JS・JQueryの基本文法もある程度理解できてきた。
よし、WordPressでテーマを作ろう
.
.
.
PHPが頭に入らん、、、

ということでPHPの勉強内容を今日から書き連ねていこうと思います。
タイトルの通り、今回は**フック**についてです。

※初学者の**ピーナッツボーイ**が備忘録程度に記述した内容ですので悪しからず、、、

<参考記事>
・[WordPress Codex: プラグイン API/アクションフック一覧](https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7)
・[Web 制作リファレンス (+α)](https://www.webdesignleaves.com/pr/wp/wp_func_hook.html)
・[Udemy: ちゃんと学ぶ、WordPre

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの日付・時刻の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの日付・時刻の比較

# Python

https://qiita.com/papi_tokei/items/43b1d15a6694f576486c

# Ruby

https://qiita.com/prgseek/items/c0fc2ffc8e1736348486

# PHP

https://qiita.com/aminevsky/items/a222845ddbdd2536da56

# Java

https://qiita.com/suema0331/items/35da67426ffea0fb4435

# JavaScript

https://qiita.com/mzmz__02/items/e316d3962e7d3ecfebf8

# Perl

https://perlzemi.com/blog/

元記事を表示

PHPの関数について

## はじめに

日本システム開発株式会社の藤井といいます。
今回は、PHPの関数について、型宣言と引数の概要をまとめています。

### 型宣言

#### 概要

関数のパラメータや戻り値に対して、型を宣言することができます。
これによりパラメータが宣言した型であることが保証されます。
[型宣言で使用可能な型一覧](https://www.php.net/manual/ja/language.types.declarations.php)

“`php

“`

#### NULLを許容する型宣言(PHP7.1.0)

型の宣言の前にクエスチョンマーク(?)をつけることで、NULLを許容する型宣言ができます。
こうすることで、パラメータはNULLも許容します。

“`php

元記事を表示

LaravelでGroupByしてその中の最新取ってきてさらにjoinして最後にOrderBy!!!!!!!!

# [1.はじめに](#-1.はじめに)
タイトルの通りですが何を言ってるのかわからない。
しかし、絶対にこれをやりたい時が来るはずです。
自分はいつも詰まる。
例えば以下の機能があったとする。

「顧客がいて、顧客がレストランを予約する。」
顧客テーブル(customers)
予約テーブル(reserves)

一応、modelでリレーション張るとしたら以下の感じ
“`Customer.php
//一人の顧客はたくさんの予約を持つ。
public function reserves()
{
return $this->hasMany(Reserve::class);
}
“`

“`Reserve.php
//予約は一人の顧客に属する(一つの予約が複数の顧客idを持つわけがない)
public function customer()
{
return $this->belongsTo(Customer::class);
}
“`

こちらreserves_table
|id |custom

元記事を表示

「Laravelで実装したAPI」と「OpenAPIの定義ファイル」に相違が無いことをテストしたい

会社で「SwaggerHubを導入するから」と担当を任され、
既存のAPIにOpenAPIを導入する方法を検討中のtenryuです。

多くのOpenAPI導入記事で**作成した仕様書とAPIに相違が発生しないよう**テストが実施されており、
弊社のSwaggerHub導入でも必須だと感じました。

私の担当プロジェクトでは、APIの実装にPHPフレームワークのLaravelが使用されています。

「Laravelで実装したAPI」と「仕様書」に相違が無いことを確認するため,
[openapi-psr7-validator](https://github.com/thephpleague/openapi-psr7-validator)というライブラリを利用しテストしている記事がいくつかありました。

しかし、わかりにくい部分が多々あったり、そもそも情報量が少なかったので、
検討した結果を他メンバーへの共有するため、まとめたいと思います。

# openapi-psr7-validator
https://github.com/thephpleague/openapi-psr7-vali

元記事を表示

「ゆめみからの挑戦状 ★第5弾」をやってみました

phpのお題でしたのでやってみました

# お題

[https://twitter.com/yumemiinc/status/1567724142811820033](https://twitter.com/yumemiinc/status/1567724142811820033)

# 総括

[https://qiita.com/mpyw/items/82994d4ae32256a2d844](https://qiita.com/mpyw/items/82994d4ae32256a2d844)

# 僕が解答したやつ

[https://twitter.com/devhi9a/status/1569694790903791617](https://twitter.com/devhi9a/status/1569694790903791617)

“`php
$json = json_encode($in);

$out = [];

for ($i = 0; $i < 15; $i++) { if (0 < preg_match(sprintf('/"([^"]+)":

元記事を表示

【Laravel】外部キー制約を外して削除したいのにCan’t DROPエラーが出る

## 環境

Laravel v9.5.1 (PHP v8.1.3)

## 状況

– PointWalletテーブル
外部キー:“`user_id“`
– Userテーブル

PointWalletテーブルの外部キー“`user_id“`を一旦削除して“`cascadeOnDelete()“`をつけたい。

“`php
public function up()
{
Schema::table(‘point_wallets’, function (Blueprint $table) {
//外部キーを外す
$table->dropForeign(‘point_wallets_user_id_foreign’);
//カラムを落とす
$table->dropColumn(‘user_id’);
});
Schema::table(‘point_wallets’, function (Blueprint $table) {
$table->foreignId(‘use

元記事を表示

【PHPUnit】factory作成はマジックメソッドが便利

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## マジックメソッドの使用
https://qiita.com/kat0/items/e037bc97a67943585082

上記の記事で“`afterCreating“`を使うとUser作成時にPointWalletの“`points“`が初期値で作成されてしまう。
テストによって値を変えたいときは下記のように書ける。

“`php
User::factory()->hasPointWallet([
‘points’ => 100,
])->create();

User::factory()->hasPosts(3, [
‘title’ => ‘Laravelについて’,
])->create();
“`

## 参考

https://readouble.com/laravel/9.x/ja/eloquent-factories.html?header=%25E3%2583%259E%25E3%2582%25B8%25E3%2583%2583%25E3%2582%25AF%25E3

元記事を表示

【PHPUnit】factoryのリレーション先のデータ作成はafterCreatingを使おう

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況

下記のようにテストでデータ作成していると、Userを削除したときのリレーション先のエラーが出ずテストでは動いているように見えていた。
だがこれに気づかないままデプロイしてdevelopでUserを削除した際、500エラーが起きてしまった。

“`php
class UserFactory extends Factory
{
public function definition()
{
return [
‘name’ => $this->faker->name(),
‘email’ => $this->faker->unique()->safeEmail(),
‘avatar’ => $this->faker->imageUrl(),
];
}
}

class PointWalletFactory extends Factory
{
public function definition(): array
{
return

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較

# Python

https://qiita.com/ny7760/items/d9c247781a790210936d

# Ruby

https://qiita.com/ima1zumi/items/28ef13f5af3d9afdeaf3

# PHP

https://qiita.com/suin/items/3edfb9cb15e26bffba11

# Java

https://qiita.com/motoki1990/items/cee6a4a75c0320b79ec4

# JavaScript

https://qiita.com/weal/items/3b3ddfb8157047119554

# Perl

https://perlzemi.com/blog/201610061475

元記事を表示

OTHERカテゴリの最新記事