PHP関連のことを調べてみた2021年03月31日

PHP関連のことを調べてみた2021年03月31日

Laravel GraphQL Lighthouse で Laravel Enum を自動型登録する

## 前提

– https://github.com/BenSampo/laravel-enum
– https://github.com/nuwave/lighthouse
– https://lighthouse-php.com

上記のライブラリはインストール済み

## 環境

– PHP 8.0.2
– Laravel 8.34.0
– nuwave/lighthouse 5.3.0
– bensampo/laravel-enum 3.3.0

[PHP8.1から言語標準機能としてenumがサポート](https://dev.to/nwby/enums-in-php8-1-2eie)されるので、今後ライブラリが不要になるかもしれません。
それまではまだしばらくは使われそうなので残します。

## LighthouseのEnum型

– https://lighthouse-php.com/5.3/the-basics/types.html#enum

公式ドキュメントに書いてある通り、Lighthouseは `BenSampo/laravel-enum` ライブラリに対応し

元記事を表示

PHP Eloquentライブラリを勉強しています

PHP Eloquentライブラリの勉強を始めました。
今回はmydbというデータベースのjobsテーブルに接続する方法です。

DB接続

“`PHP
require_once ‘./vendor/autoload.php’;

$db = new Illuminate\Database\Capsule\Manager;

$db->addConnection
([

‘driver’ => ‘mysql’,

‘host’ => ‘localhost’,

‘database’ => ‘mydb’,

‘username’ => ‘root’,

‘pasword’ => ”

]);

$db->setAsGlobal();

  $db->bootEloquent();

class Jobs extends Illuminate\Database\Eloquent\Model {
}

$results = J

元記事を表示

月の満ち欠け、ちょっとアバウトなアイコンで出力。

### 月の満ち欠け、ちょっとアバウトなアイコンで出力。
github https://github.com/taoka-toshiaki/moon

“`php:index.php
‘?’], //朔
(object) [“moon” => ‘?’], //朔
(object) [“moon” => ‘?’], //朔
(object) [“moon” => ‘?’], //三日月
(object) [“moon” => ‘?’], //三日月
(object) [“moon” => ‘

元記事を表示

PHPで配列の構造を見やすくしてくれるデバッグツール「dBug」

配列を`var_dump()`で中身を表示した際,めっちゃ見にくいじゃないですか。

`

`タグを挟み込むだけで見やすくはなるんですけど↓のような時は流石に目がくらみます。
![rapture_20210331014104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/34197954-52e2-ab68-7bd6-e88363d3352c.png)

そんな時はdBugというPHPのデバッグツールを使えばめっちゃ見やすくしてくれます。
基本的には[こちらの記事](https://qiita.com/goemon330/items/4499e4b30f0210bc7090)と内容は同じです。

# ダウンロード
本来はhttp://dbug.ospinto.com/ よりダウンロードできるらしいですがサイトが閉鎖してるっぽいです。。。
![画像_2021-03-31_014957.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

Laravel ログを出力する

## 環境

- PHP: 8.0.2
- Laravel: 8.34.0

## ログ関連記事

- [Laravel リクエストログを出力する](https://qiita.com/ucan-lab/items/bfd15b096a916f811468)
- [Laravel SQLの実行クエリログを出力する](https://qiita.com/ucan-lab/items/753cb9d3e4ceeb245341)
- [Laravel ConsoleとHttpのログファイルを分ける](https://qiita.com/ucan-lab/items/4dd7b5f7a3eb57a3ef1f)

## ログの基本

```php
logger('test', ['foo' => 'bar']);
```

ログの関数は、第一引数にメッセージ、第二引数にコンテキストを指定します。

```
[2021-04-01 00:00:00] local.DEBUG: test {"foo":"bar"}
```

ログのフォーマットとして下記のように出力されます。

```
[YYYY

元記事を表示

AjaxでJS⇔PHPの非同期通信を超簡単に実装してみた。

久しぶりです。今回は猿でもわかるAjaxということで非同期通信を実装する方法&サンプルを書いていきます。
何千番煎じだよwって言われそうですがお構いなしに書きます。
JavaScriptとかあまり知らない人にもわかるように説明するつもりですのでよろしくお願いします。

# はじめに
多分一部の人は**JQueryで非同期通信とかちょっとレガシーじゃないっすか?**って思ってるかも知らません。
確かに今はJQueryで実装するよりもVueとかReactとかの優秀なフレームワークがあるんで古い感じはしますが個人的に**SPAの基礎中の基礎を理解するには実装が手っ取り早いJqueryを使ったほうが良い**と思います。

※SPAとはSingle Page Applicationの略でユーザーの操作などに応じてページの遷移を行わずして動的にサーバーと通信を行うアプリケーションの総称です。GoogleMapとかが有名ですね。
![画像_2021-03-30_174309.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

WordPressのタグ一覧画面に表示されないタグがあった場合への対応

# 背景
WordPressサイトで固定ページを使ってタグ一覧画面を作成した時、
管理画面側から追加したタグが一覧に表示されない現象が発生しました。

# 仕様
- [AdvancedCustomField(ACF)](https://www.advancedcustomfields.com/)で追加したカスタムフィールド(下記の例では`tag_index`がキー)を取得する記事の並びの基準にする
- `tag_index`は数値フィールドで昇順に取得する

# 修正前のコード

```page-tags.php
'tags',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'tag_index', //ACFのフィールド名
'hide_empty' => true,// 紐づけられている記事があるタグのみ取得
];
$tags_array = get_terms($args);
?>

// タグのループ

元記事を表示

PHPの標準関数をRubyで書く(配列操作編)

## はじめに

PHPの標準関数をRubyで書いてみました。
簡単に書けそうなものだけパズル感覚で書いてます。

配列操作編です。

PHPの添字配列はArray、連想配列はHashに対応させました。
特に差し支えなさそうなケースでは他の型でも許容としています。(返り値がEnumeratorになる等)

引数と返り値の型はテーブルで記載しました。

## array_chunk($array, $chunk)
[PHP: array_chunk - Manual](https://www.php.net/manual/ja/function.array-chunk.php)

|||
---|---
array|Array
chunk|Integer
return|Enumerator
```ruby:Ruby
array.each_slice(chunk)
```

|||
---|---
array|Hash
chunk|Integer
return|Hash
```ruby:Ruby
array.each_slice(chunk).map(&:to_h)
```

## arr

元記事を表示

PHP5上級試験/準上級試験の上級合格に挑戦(15) プログラミングPHP第3版 5章〜6章

# 5章 配列

配列の書き方は、[]を使って短く書くことも可能

```index.php
$days = array('gasket' => 15.29, 'wheel' =>75.25, 'tire' => 50.0);
//上記はこうも書ける
$days =['gasket' => 15.29, 'wheel' =>75.25, 'tire' => 50.0];
```
range()で、文字列が指定された場合、最初の文字を使って範囲を作成する

```index.php
echo range("aaa","zzz"); //これはrange("a","z")と同じ
```
配列の要素数を数えるcount()・sizeof()だが、値がないものは数えない。

```index.php
$days = array('gasket' => 15.29, 'wheel' =>75.25, 'tire' => 0 );
unset($days['tire']); //値を削除してみた
echo count($days); //出力は2 (unsetがなければ3)
```
多次元配列の配

元記事を表示

Carbon subMonthではなくsubMonthsNoOverflowを使用する

Carbonでの月の加算減算でsubMonthを使用していると下記のようなことが起こってしまうので、subMonthsNoOverflowを使用したほうが良いです。

### subMonthを使用した場合
```php
$date = new Carbon('2021-03-29');
$last_month = $date->subMonth();
// 2021-03-01
```

### subMonthsNoOverflowを使用した場合
```php
$date = new Carbon('2021-03-29');
$last_month = $date->subMonthsNoOverflow();
// 2021-02-28
```

元記事を表示

PHP sortについて sort(), asort(), ksort()

#各ソートの実施例

例)

```php

string(6) "ichigo"
["red"]=>
string(5) "apple"
["yellow"]=>
string(6) "banana"
["green"]=>
string(5) "melon"
}*/

sort($arr);
// var_dump($arr);//値を元にソート(昇順・キーが数値になる)
//結果
/*
array(4) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "ichigo"
[3]=>
string(5) "melon"
}
*/

$a

元記事を表示

Magento2でページを作成する

今回は任意のURLでページを表示させるようエクステンションを改修していきます。

#ファイル準備
今回は以下の2ファイルを作成します。

- magento/app/code/Vendor/News/etc/frontend/routes.xml
- magento/app/code/Vendor/News/Controller/News/Index.php

作成後のディレクトリ構成は以下です。

```
magento/
└ app/
└ code/
└ Vendor/
└ News/
├ Controller/
│ └ News/
│ └ Index.php
├ etc/
│ └ frontend/
│ └ routes.xml
│ └ module.xml

元記事を表示

Magento2でエクステンションを作成する

今回からニュース一覧を表示するエクステンションを作成していきます。今回はエクステンションの作成と有効化までです。

#エクステンションを作成する

準備として以下のファイルを作成します。(作成するエクステンション名はVendor_Newsです。)

- magento/app/code/Vendor/News/etc/module.xml
- magento/app/code/Vendor/News/registration.php

```
magento/
└ app/
└ code/
└ Vendor/
└ News/
├ etc/
│ └ module.xml
└ registration.php
```

作成したファイルにエクステンションの雛形を記述します。エクステンション名以外は全て共有です。

```xml:module.xml

Magento2にエクステンションをインストールする

Magneto2にCLIでエクステンションをインストールする方法を説明します。もちろんMagento管理画面からGUIによるインストールも可能です。

#エクステンションを入手する

まずはエクステンションをMagento Marketplaceで入手します。
今回は例としてMagento2を日本語化するエクステンションを購入(無料、Magento2.3用)。

https://marketplace.magento.com/community-engineering-japan-common.html

購入したら、CLIでエクステンションをインストールしていきましょう。

#インストール

```
$ sudo composer require community-engineering/japan-common
```

認証鍵の入力を求められるので、Magento Marketplaceから取得したPuclic KeyとPrivate Keyを入力してください。

#エクステンションを有効化する

以下のコマンドでエクステンションの状態を確認することができます。先ほどインストー

元記事を表示

Magento2をインストールする

Magento2をローカル環境にインストールする方法を順に説明していきます。

#環境

- MacOS Big Sur version 11.2.3
- Virtual Box version 6.1.16
- Vagrant version 2.2.9
- git version 2.29.2

#プレインストール

/etc/hostsファイルにIPアドレスとURLを追加します。

```
$ sudo apt install nfs-kernel-server

$ sudo vim /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
192.168.200.50 dev.magento.com
```

#インストール

###1. 下記リンクのプロジェクトをクローンする

```
$ git clone git@github.co

元記事を表示

Magento2とは何か

#Magento2について

https://magento.com

アメリカのMagento社が2007年に開発を始めたオープンソースのECプラットフォームで、2018年にAdobeシステムズ社に買収され同社ラインナップに統合されたものです。公式サイトによると2018年時点で25万以上のECサイトで使用されており、年間取引額は1,550億ドルを超えています。

主に欧米での人気が高く、越境ECを行うのに必要となる決済や配送の仕組みを標準で利用できます。日本では馴染みが薄いですが、世界規模では、Shopifyの次点、オープンソースでは1番シェアが高いプラットフォームです。

Magentoの開発を支えるのは30万人を超える開発者と1,250以上のパートナー企業であり、Extension(Magentoの機能を拡張するプラグイン)は3,000以上存在しています。

Magentoのシェアに関しては以下URLを参照してください。

- [W3Techs - CMSシェア](https://w3techs.com/technologies/overview/content_manageme

元記事を表示

PHP strcmp()について

#strcmpについての検証結果

第一引数と第二引数を比較して第一引数より第二引数が大きければ負の値。小さければ正の値、同じなら0を返す。

例)

```php

元記事を表示

生PHPについて知識を資産化していく①

# 前提として
+ 自分が勉強してきた知識を保存するために書いています。
+ 本当に初歩的な事から書いていってます。
+ 万が一間違っている可能性もございますので、その時はご指摘頂ければ嬉しいです。
+ 常時更新していく予定です。
+ アウトプット用ですので、MAMPを使用していきます。

## ブラウザに「test」表示させる
```index.php

```

## 現在のPHPのバージョンと設定一覧を表示させる
```index.php

```

## 数字と文字
+ 数字は半角で入力する
+ 文字はシングル(またはダブル)クウォーテーションをつける

```index.php

```

## 変数
「$」マークで書き始める

```index.php

元記事を表示

【PHP】確認画面で画像を保存せず表示

#はじめに

ユーザー新規登録で確認画面に遷移した際に、`戻るボタン`を押すと画像だけが残ってしまう問題が発生しました。
![confirm_disp_before.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/0feb051a-d15a-a928-7f72-da82feca1d32.gif)
こちらは確認画面で画像をフォルダに保存していたため、起きてしまいました。
![confirm_disp_after.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/099b47e1-7523-5ae0-25b7-73edab617084.gif)
そこで確認画面で画像を一時的にセッションに保存し、登録確定された場合のみ保存される上記動作画面のような処理を実装します。

#実装方法
##画像情報をセッションに保存

```user_add.php

新規登録

【Laravel】ルーティングの状態をファイルで見やすく確認する小技

## 環境
|バージョン等|
|-|
|Laravel 6.20.19|
|MacOS 10.15.7 Catarina|

## ①普通にルーティングを確認してみる
Laravelの通常のWebページとしてのルーティングは`Routes/web.php`にいろいろと記載していますが、
prefixとかgroupeなどを記述していると、実際にどうなっているか分からなくなったりしますよね。

これを確認する時に使うのが、

```sh:ターミナル
$ php artisan route:list
```
というコマンド。

なのですが、これがずら〜と表示されてちょっと分かりづらい。
## Before
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675596/dc4da604-7b48-1dbf-19b2-1149fbfa720f.png)

## ②見やすくルーティングを表示する
ということでこれをファイルとして保存して見やすく表示してみましょう。
`route:list`コマンドに`

元記事を表示

OTHERカテゴリの最新記事