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

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

三項演算子とは?

この記事では
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
app(‘router’)->getRoutes()->match(app(‘request’)->create(url()->previous()))->getName();
“`

“`php:

元記事を表示

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

元記事を表示

Google App EngineにLaravel 8をGithub Actionsでデプロイする

インスタンスバージョンとLaravelのバージョンアップをしてからしばらく手動アップばっかりやってたのですが、いいかげんCICDを組まなければということで、Github Actionsで組んでみました。まだ途中ですがつまづきポイントを忘れないうちにメモしておきます。
対象読者としては手元のローカル環境でAppEngineにシンプルなPHPアプリ(Hello Worldとか)を手作業でデプロイしたことがあるくらいの方です。

# 公式の手順がなくなっている

LaravelをGoogle App Engine Standard環境で実行するには、公式?ガイドがありました

~~https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard~~

しかしいまはなくなって別ページにリダイレクトしてしまいます。

そこで、いくつかのサイトをもとにメモしていこうと思います。

# 環境変数の設定、とにかく/tmpに書き込ませる

App Engineの基本は、とにかく書き込み可能ディレクトリが/tmpの

元記事を表示

エルビス演算子を使うときの注意点

## 前置き
三項演算子を省略できる書き方で、エルビス演算子「?:」というものがありますが、
自分が間違えた使い方をしていた為、共有したいと思い記事にしました。

## エルビス演算子の間違えた使い方
“`php
$a = 15;

$b = $a === 15 ?: 17;
“`

私は、この$bの期待値としては「15」であると思っていました。
しかし、この$bの値は「true」になっていました。

これは「$a === 15」の結果がtureの為、三項演算子の条件式的には「$a === 15」を返します。
言い換えると下記のようなコードに置き換えることができます。
“`php
$a = 15;

$b = $a === 15 ? $a === 15: 17;
“`
これを見ると$bの値は「true」になるのがわかります。これと同じ現象が起きているというわけです。

## エルビス演算子の正しい使い方
“`php
$a = 15;
$b = $a ?: 17;

//言い換えると

$a = 15;
$

元記事を表示

MacにデフォルトでPHPがインストールされなくなったのでdockerを使ってサクッとPHPを実行できるようにしてみた。

# その時PHPerに電流走る・・・!!

“`
zsh: command not found: php
“`
昨日まで使えていたPHP・・・俺たちのPHPが・・・

なんて少し前からMacOSにデフォルトで入っていたPHPが使えなくなることは界隈では
ちょくちょく耳にしていたのでさほど驚きはしませんでしたが、Montereyアップデート後からぬるりとなくなっていたので笑いました。

直接PHPをインストールしてもいいですが、母艦の環境を汚したくない民として今回はdockerとzshのエイリアスでサクッとPHPを実行できるようにしてみました。
よければ参考にしてください。
下記のような形でPHPが実行できるようになります。

“`
$ dphp xxxx.php
“`

## dockerイメージをpull

docker hubから最新のPHPのイメージをpullします。
“`
$ docker pull php
$ docker image ls
php latest 7c7914343522

元記事を表示

[PHP] MapとSet ~ Data Structures

# 概要

PHPのData Structuresモジュールに含まれるMapとSetを試してみたので紹介します。

– Data Structuresモジュール
– Mapクラス、SetクラスおよびHashableインターフェース
– ベンチマーク

:::note warn
この記事のコードはPHP**8.1**で試したものです。
:::

# Data Structuresモジュールとは

https://www.php.net/manual/ja/book.ds.php

PHP7から提供されている、配列の代わりに使える効率的なデータ構造です。
この記事でとりあげるMapとSet以外にもVectorやStack、Queueなどが提供されています。
要インストール。

ベンチマーク等はこちらの[ブログ](https://medium.com/p/9dda7af674cd)で詳しく説明されています。(マニュアルからもリンクされてるブログです)
[^1]:Efficient data structures for PHP 7 https://medium.com/p/9dda7af67

元記事を表示

error: open(“docker/hoge/mysql.sock”): Invalid argument

error: open(“docker/hoge/mysql.sock”): Invalid argument
上記のようなエラーが出たときはsqlが入っているディレクトリを.gitignoreの設定に追加すればよいです。

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較

# Python

https://qiita.com/Sunset_Yuhi/items/fa6e97867ac46a604780

# Ruby

https://qiita.com/u651601f/items/52af880d1569c6c1066f

# PHP

https://qiita.com/mpyw/items/346c535ade9dcf6e1b12

# Java

https://qiita.com/takahirocook/items/748990882f2de7a630a1

# JavaScript

https://qiita.com/daikw/items/663bc0b5a4c025694974

# Perl

https://perlzemi.com/blog/20161

元記事を表示

Laravel 参考にしている記事 (自分用のメモ)

# はじめに

メモ用として残しておきます。
どんどん追加していく予定です!
# 目次

1. [YOUTUBE](#Chapter1)
1. [WEBサイト](#Chapter2)
1. [書籍](#Chapter3)



# 1.YOUTUBE

## 打田裕馬さん


# 2.WEBサイト
– [https://reffect.co.jp/laravel/laravel-sail#sail_up](URL)

# 3.書籍
初学者には難しく感じました!
– [https://www.socym.co.jp/book/1300](URL)

元記事を表示

Larval sail をインストール!!

# はじめに

Larval sail インストールしてみます!
今回の記事の通りに行えば、ログイン画面が初めからついてきます!!

# 目次

1. [Dockerをインストール](#Chapter1)
1. [Laravelをインストール](#Chapter2)
1. [sailコマンド](#Chapter3)
1. [参考文献](#reference)



# 1.Dockerをインストール
https://www.docker.com/

# 2.Laravelをインストール
DockerにLaravelをインストール
“`言語名:zsh
% curl -s https://laravel.build/memo-app | bash
“`
インストールしたディレクトリに移動して、起動
“`言語名:zsh
% cd memo-app && ./vendor/bin/sail up

元記事を表示

OTHERカテゴリの最新記事