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

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

WordPressでOGPの自動出力をしてみた

# はじめに
最近流行りのJamstack、いいですよね。
弊社でもGatsby.jsを使ったJamstackの実績があります。(※担当エンジニアは私じゃないです)
[“TINDER” CORPORATE WEB SITE & MOVIE|WORKS|PLUS-D Inc.](https://plus-d.co.jp/works/tinder.html)

Gatsby.jsを調べているうちに、Gatsby.jsでOGPの自動出力をしたという記事を拝見しました。
[GatsbyJSでOGP画像の動的生成にチャレンジしてみた | Learn Something New](https://blog.kentarom.com/create-gatsbyjs-plugin-to-dynamically-generate-og-images/)

で、OGP自動出力したすぎる、と。目的がGatsby.jsからOPG自動出力に変わりまして。
じゃあ、個人でやってるブログで試したろ!と思ったのですが、私のブログ、ヘッドレスCMS化?SSR?なにそれ?みたいなWordpressを使ったフツーの

元記事を表示

Laravel すべてのviewで共通する変数の設定

## はじめに
Laravelを勉強中です。備忘録として残しておきます。

## 手順
#### サービスプロバイダーの作成
“`app/Provider/ComposerServiceProvider.php

with(‘user'(使いたい変数名), Auth::user()(使いたいデータ));
});
}
}
“`
View::composerの第一引数

元記事を表示

[仕事納め]2020年にやらかしたミスをまとめる[未経験から2年目]

こんにちは。web系を中心としたプラグラマをしております。
小さなミスからそこそこ大きめのミスまで、今年1年でたくさんのミスをしてきました。
まだ新人で大きな権限を頂いていないこともあり、[本番環境でやらかしてしまった](https://qiita.com/advent-calendar/2020/yarakashi-production)皆様ほどのインパクトあるやらかしはないのですが、コーディングや開発環境構築などであれこれ反省点があるのでまとめていきたいと思います。
アンチパターンやあるあるとしてお楽しみ下さい。

・[コーディング系](#コーディング系)
・[環境系](#環境系)
・[人として](#人として)

#コーディング系
###誤字
とにかく多かったです。
クラス名や関数名ならすぐエラーが発生して見つけやすいのですが、phpで変数名のスペルミスをしたりすると、そのままnullが代入されたりして見つけづらく、時間の無駄になりがちでした。

“`php
$address = ‘hogehoge’;
print $adress; // 返却値なし
“`
くだらない誤字ですが

元記事を表示

PHP 月末の日にちを取得する

# 目的

– PHPで月末の日にちを取得する方法をメモ的にまとめる

# 前提情報

– 下記サービスを用いてWeb上でコードの動作を確認した。
– [https://paiza.io/ja](https://paiza.io/ja)
– 忘れそうなのでメモ的にまとめる。

# 詳細

1. ひと月前の月末の日にちを取得したい時は下記を実行する。(YYYY/MM/DDの形式で情報を取得する事ができる。)

“`php
$last_day_of_last_month = date(‘Y/m/d’, mktime(0, 0, 0, date(‘m’), 0, date(‘Y’)));
echo $last_day_of_last_month;
“`

1. 今月の月末の日にちを取得したい時は下記を実行する。(YYYY/MM/DDの形式で情報を取得する事ができる。)

“`php
$last_day_of_this_month = date(‘Y/m/d’, mktime(0, 0, 0, date(‘m’) + 1, 0, d

元記事を表示

php.iniの保存場所の確認・編集、PHPのエラーメッセージの表示方法

##なにが起こったのか
PHPの学習を開始したが、エラー文が表示されずに困っていた。
-> php.iniを編集すれば表示されることが分かった。
-> **どこにphp.iniがあるかが分からなかった。**
-> **php.iniが読み取り専用で編集できなかった**

##実施環境
**Oracle VM VirtualBox 6.1.16
-> Ubuntu 20.04
-> Apache 2.4.41
-> PHP 7.4.3**

##php.iniの保存場所の確認方法
今回は**「phpinfo」**で確認する。
->webでphpinfoを確認する

“`php:info.php

“`

###結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883543/7654fe39-ff8c-5c94-4c64-8689778ebae7.png)

保存場所は「Configuration File(php.ini) Path」に記載され

元記事を表示

laravelの始め方(Linux)

私自身使い始めるときになかなかうまくいかなかったのでこれから始める人がつまづきにくいようにまとめておきます。
# 1. composerのインストール
composerとはPHPのライブラリを管理するためのツールで、laravelはこれを使ってインストールします。

“`

php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
php composer-set

元記事を表示

【初心者】PHPで文字列を反転してみる

# 文字列を反転する
タイトル通り、文字列を反転する。
アルファベット・数字の場合で試してみる。
###アルファベットの場合
“`php
$n = “abcde”;
echo strrev($n);
// 以下出力結果
edcba
“`
###数字の場合
“`php
$n = “012345”;
echo strrev($n);
// 以下出力結果
543210
“`
このような結果となった。

因みに、平仮名とカタカナも試してみたが、文字化け?してしまったのかエラーだったのかわからないけれど、うまくいかなかった。
もう少ししっかり調べる必要があると思った。
しかしながら、この関数も頭の片隅に入れておいて損はないのかもしれない。

元記事を表示

【初心者】PHPで10進数を2進数に変える

# 10進数を2進数に変換したい
簡潔に。

“`php
decbin(10進数);
“`
実際に使ってみると…

“`php
$str = 18;
echo decbin($str);
// 出力結果
10010
“`
このような感じで、10進数”18″が”10010″と2進数に変えることができた。
## 逆に2進数を10進数には…
では逆はどうだろうか。

“`php
bindec(2進数);
“`
実際に使ってみると…

“`php
$str = 10010;
echo bindec($str);
// 以下結果
18
“`
このように2進数を10進数に変えることができた。

簡単に覚えておけそうなので、覚えておく。

元記事を表示

Laravel で ValueObject を最も簡単に導入する方法

## はじめに
`ValueObject`を導入する方法を探す必要なんてなくて、`app/ValueObjects`ディレクトリ作ればおしまいではあるのですが、`Laravel`らしく`php artisan make:value-object`コマンドでファイルを自動生成するところまでをパッケージにして公開しました。

ソースコードは[こちら](https://github.com/imunew/laravel-value-objects) です。
`composer require imunew/laravel-value-objects` で導入できます。

## こんな`ValueObject`がいい
`ValueObject`に求めるものは、以下のとおりです。

– `immutable`
– 必要なデータは`__construct`でのみセットして
– `setter`は`public`にしない
– `@property-read`なプロパティにアクセス可能
– `Eloquent Model`みたいに
– `getter`をいちいち書かなくていい

元記事を表示

Laravelの初期画面を表示させるまでのエラー解決

# はじめに
Homestead環境でLaravelのプロジェクトを作成しました。

# 手順

コマンドで以下を実行すると

“`
composer create-project 〜
“`

下記のエラー

“`
Your requirements could not be resolved to an installable set of packages.

Problem 1
– phpunit/phpunit[6.0.0, …, 6.5.14] require php ^7.0 -> your php version (8.0.0) does not satisfy that requirement.
– Root composer.json requires phpunit/phpunit ~6.0 -> satisfiable by phpunit/phpunit[6.0.0, …, 6.5.14].
“`

phpのバージョンを7.0に変更

##### コマンド

“`
php70
“`

ブラウザで

“`
failed t

元記事を表示

【初心者】PHPで文字列の文字の入れ替えについて

## str_replaceはどうだろう?
以前、「文字列の中の特定の文字を削除したい」という記事を書いた。
https://qiita.com/wakiyo1017/items/ace7ddc7b364edc7ccff
その時知ったのは、特定の文字を特定の文字に入れ替えるということ。
つまり、本当は1文字だけ入れ替えたくても、他の同じ文字まで入れ替わってしまった。
この関数が使えないという訳ではないし、この関数を使用してできることの幅が広がった。
でも、今回は指定した場所の文字だけを変えたい。

## substr_replace関数を使う。
“`php
substr_replace(“文字列”, “入れ替え後の文字”, “入れ替え前の文字が何文字目か”, “何文字目まで入れ替えたいか”)
“`
ううむ。日本語で書くとわかるようなわからないような、不思議な感じになってしまった。

“`php
$str = “abcdefg”;
$replace = substr_replace($str, “&”, 3, 2);
echo($replace);
// 以下出力結果です。
abc

元記事を表示

PHP 現在時刻を取得する

# 目的

– PHPで現在時刻を「YYYY/MM/DD HH:MM:SS」の形で取得する方法を簡単にメモする

# 前提情報

– 下記サービスを使用して確認した。
– [https://paiza.io/ja](https://paiza.io/ja)

# 詳細

– 下記を実行する。

“`php
echo date(“Y/m/d H:i:s”);
“`

元記事を表示

Laravel Collection型の空判定 isEmpty()

## 困りごと
PHP歴3ヶ月、Laravel歴1ヶ月の初学者です。LaravelのCollection型の空判定でハマってしまったので、同じような方が減ることを祈って投稿します。下図のように、ある条件で検索を行い、Collection型で返ってきた値に「データが入っているか」or「空」であるかを判定して、表示を分岐をさせる方法についてです。
![flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/e1b41a26-7df8-b9da-4dd4-9b17c7700908.png)

>コレクション型とは?
>Object型の一種で、Laravel独自の型でデータベースからデータを取得した際等はこの型になっています。コレクションで利用可>能なメソッドは全部で100個以上あります。メソッドチェーンで記述が可能です。

## 開発環境
PHP 7.2.34 / Laravel 6.20.5

## 結論
Collection型の空判定はisEmpty()メソッドが優秀。

“` con

元記事を表示

phpにおける関数

#計算をする上で便利な関数
①ceil(切り上げ)

“`
// index.php
$x = 5.2;
echo ceil($x);
“`

②floor(切り捨て)

“`
// index.php
$x = 5.2;
echo floor($x);
“`

③round(四捨五入)

“`
// index.php
$x = 5.2;
echo round($x);
“`

④pi(円周率)

“`
echo pi();

function circleArea($r) {
$circle_area = $r * $r * pi();
echo $circle_area;
}
※半径が2の円の面積の計算
circleArea(2);
?>
“`

⑤mt_rand(乱数)

“`
echo mt_rand(1, 100);
“`

#文字列に関する関数
①strlen(文字列の長さ)

“`

元記事を表示

Type:JSONに、INSERTができない人へ

### 現状の問題
MySQL version 5.7.30

MySQLで、type:jsonの列を作ったのですが、なぜかinsertできませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276138/886390c8-6c89-5ecf-d44e-5877e19c959a.png)
### 解決策: json_encodeを使用する

まず、テーブルを作ります。(type:jsonの列あり)

“`
create table sample_json(id int, json_data json);
“`

次にこうすればinsertできるはずなのですが..できない。なんでや..

“`
insert into sample_json values(1, ‘{“from” : “Japan”, “name” : “Taro”}’);
“`

↓ 修正

“`
insert into sample_json values(1, “{\”from\”: \”Japan

元記事を表示

【初心者】PHPで文字列の中に特定の文字列が含まれているのかチェック

# 文字列の中に特定の文字列が含まれているのかチェックしたい
以前、文字列の中に特定の文字が何回含まれているのか?という記事を書いた。
https://qiita.com/wakiyo1017/items/177f3312c720bf01e6ef
今回は、文字列の中に特定の「文字列」が含まれているのかチェックするためにはどうするか学んだ。
プログラミングを勉強していて面白い事は、答えがいくつもあってそのどれもが正解だというところなのだけれど、この方法もいくつもあるらしい。
そのうち二つを残しておく。
## strpos
“`php
$str = “abcdefg”;
$s = “cd”;
echo strpos($str, $s);
// 以下出力結果
2
“`
strposは特定の文字列が含まれている場合は、その文字列が何文字目から含まれているかを返してくれるようだ。
含まれていない場合は、false を返してくれるので、含まれているかを確認するためには、if文を用いて…

“`php
if(strpos($str, $s) === false){
echo “nothin

元記事を表示

Cake PHP4.2でDependency Injectionができるようになっていた!

PHPのフレームワークは数多くありますが、その中でも特に人気を誇っているのはLaravelでしょうか。
そんなLaravelの魅力の一つといえば、DIの仕組みが内蔵されていて引数をタイプヒントするだけで気軽に注入できるところにあるでしょう。

Cake PHPは長らくDIの仕組みを持っていませんでしたが、近日(12/20)リリースされた4.2.0からDIの機能が追加されました。

注意:Cake PHPのDIは現在実験的な機能です。

# 最も簡単なDIの例

実際にどのように記述していくのか見ていきましょう。まずはコントローラーは以下の通りです。

“`php

元記事を表示

【PHP】Laravel bladeビューのリファクタリング。implode, nullチェック, 変数をタグとして出力

個人用メモです。
rowspanおよびcolspan属性があるth/tdタグの生成に関するコードをリファクタリング。各処理の意味と実行内容を理解する。

##目次

1. [リファクタリング前のコード](#リファクタリング前のコード)
2. [問題点](#問題点)
3. [リファクタリング完了後のコード](#リファクタリング完了後のコード)
4. [リファクタリングの処理内容](#リファクタリングの処理内容)
5. [class属性に不要なスペースの除去](#1-class属性に不要なスペースの除去)
6. [rowspanとcolspanの除去とダブルクオテーションの追加](#2-rowspanとcolspanの除去とダブルクオテーションの追加)
7. [属性がないときの無駄なスペース除去](#3-属性がないときの無駄なスペース除去)
8. [implodeメソッド](#implodeメソッド)
9. [nullチェック(if文とissetメソッド)](#nullチェックif文とissetメソッド)
10. [変

元記事を表示

[php]usort関数について

#usort関数について
自身で勉強していて、わかりにくかった部分であるusortに関して、まとめてみました。

“公式php.net“から

“`
usort ( array &$array , callable $callback )
“`
と説明されています。

* **&$array** :入力する配列
* **$callback**: コールバック関数

要するに、第1引数で並び変えたい配列を渡し、第2引数で並び替える順番を定義した比較関数を入れるということです。
#使い方

* 今回使う配列

“`
$data = [ 
[‘name’ => ‘taguchi’, ‘score’ => 80],
[‘name’ => ‘kikuchi’, ‘score’ => 60],
[‘name’ => ‘hayashi’, ‘score’ => 70],
[‘name’ => ‘tamachi’, ‘score’ => 60],
];
“`

* 自らが定義した比較関数

“`
function scores($a, $b) {
if($a[

元記事を表示

Advance Custom fields(ACF)の出力方法まとめ

#Advance Custom fields(ACF)とは
wordpressでカスタム投稿が出来るプラグインで一番有名だと思います。
[Advance Custom fields](https://ja.wordpress.org/plugins/advanced-custom-fields/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/24d526b7-8a88-1e81-fbb5-b36ff361c5ca.png)

管理画面での設定方法は簡単なのですが、出力が少し難しいので覚書しておきます。

#テキスト出力例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/26967f91-4ec2-b40a-eb08-7d7e08151c0d.png)

“`php

元記事を表示

OTHERカテゴリの最新記事