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

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

[WordPress]特定のフィールド項目を記入している最新記事を表示させる方法

急遽WordPressを触らないといけない事になりキャッチアップのフローを、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!

#特定のフィールド項目が記入されている記事を表示させたい!
最新記事を表示させる方法は調べたら直ぐに見つかりました。
・[特定の記事だけ最新の5つ取得したい](https://gist.github.com/furahaclothing/3712942/)
・[最新記事5件を出力する方法](https://denno-sekai.com/wordpress_latest_articles/)

ただ、特定のフィールをを記入されている記事に絞り込むのにちょっと時間がかかりました。

このコードで表示できた!

“`php

‘posts’,
‘posts_per_page’ =

元記事を表示

Symfonyプロジェクトで開発を進める際、気をつけていること

#はじめに
この記事は[Symfony Advent Calendar 2019](https://qiita.com/advent-calendar/2019/symfony) 25日目の記事です。

こんにちは、きゅ〜ぶです。
スタートアップで`Symfony`ベースで作られてるEC系の自社アプリケーション開発のエンジニアをやってます。
Symfony歴が2ヶ月半の若輩者ですが、一人でSymfonyを使って新規機能の開発やリファクタリングをする際、意識していることを書こうと思ってます。
あくまで個人的なやり方なのでもっといいやり方などあればご教授いただければと思います!

#前提
○画面でどういう操作をしたらその機能が実現できるかを理解している。
→要件の理解ができていること。
○あくまで自分の個人的な経験に寄る知見であること。

#Symfonyでデバッグする際は、dumpを使おう
以下公式ドキュメントを見たらだいたい使い方は載っております!
[How to Dump Debug Information in Twig Templates](https://symfony.com

元記事を表示

kintoneとのAPI連携でつまづいたこと

##はじめに##
いえらぶAdventCalendar の23日目です。

初めてこういう記事を書くので温かい目で見ていただけると嬉しいです。

今回の記事は、私が開発していたkintoneへのAPI連携のところでつまづいたところをまとめていきます。

今までkintoneは一切触ったことありませんし、社内でも使ったことがないツールです。
手探り状態で開発を進めていましたが、開発すればするほど、よく分からないエラーがでてきてたくさんつまづきました。
今振り返るとなんでこんなところに引っかかったのか、と思うのですが、私のつまづいたところが、これから開発する方の参考に少しでもなればいいなあと思います。

ちなみにですが、kintoneの画面上の操作は一切できませんし、設定とか権限とか操作の方法は分からないので、その辺のことはkintone ヘルプをご覧ください。

元記事を表示

「デートの食事」に悩んだ時、グータンヌーボヌーボする。

# はじめに

みなさんマッチングアプリは好きですか??
一度でもマッチングアプリをやったことがある方は、こんな悩みを抱えたことはないでしょうか?
####「食事の場所どこ行こう?( ˙▿˙ )」

….

ということで!

# TwitterAPIでグータンヌーボで紹介されたお店情報を取得する。ついでにLINEで表示する。

グータンヌーボヌーボご存知でしょうか?
わたくしめちゃめちゃ好きなんですけど、
この番組で紹介されるお店がすごくオシャレで是非いつか行ってみたくなるようなところなんですね。
そして、その番組Twitterが毎回決まった書式でお店情報を紹介しているのでちょうど良かったので取得してみようと思いました。:sunny:

**使ったのもの**

– TwitterAPI
– TwistOAuth
– LINEAPI
– PHP

[グータンヌーボヌーボとは](https://www.ktv.jp/nouveau2/)
台本無し、カメラだけの空間はまるでプライベートのようで、ゲストたちはついつい本音をこぼしてしまう!毎回、MC陣の中から1人が、女性ゲスト

元記事を表示

徳丸本のりんこうメモ

# ファイルインクルード攻撃

– プログラムの中で他のファイルをincludeしている場合、攻撃者が意図的にそのファイル名を修正して不正にファイルを処理させる攻撃
– 例えばphpではinclude 文により他のファイルをincludeすることが可能。
– URLの引数でincludeするファイル名を指定する場合、意図的に引数を変更して不正にファイルを処理する。

[[サイバー攻撃大辞典 トップ] > [ファイルインクルードの脆弱性(file-include-vulnerability)](http://securitychecklist.net/security/cyber-attack/file-include-vulnerability.html)

# 実行例

“`html:index.html


本文【省略】

“`

期待する入力

“`
header=spring

require

元記事を表示

画像投稿がメインのサービスをはじめて運営してみて、失敗したこと、改善したこと、やろうとしていること

こんにちは、キッド✈️と申します。
東南アジア発のスタートアップスタジオ、[GAOGAO](https://gaogao.asia/)のサーバーサイドエンジニアです。
このQiitaは[GAOGAO Advent Calendar 2019](https://qiita.com/advent-calendar/2019/gaogao)の25日目の記事です。

先日、[@rikuhirose](https://twitter.com/rikuhirose)さんと共同で開発している、旅行サービスをリリースしました。ユーザーによる画像投稿がメインになるサービスです。

リリースしたサービスはこちらです。
20191214003023.png
[FRIP | 思わず友達を旅行に誘いたくなる、 おすすめなスポットがあつまる旅

元記事を表示

PHP htmlspecialcharsについて

## [htmlspecialcharsについて](https://www.php.net/manual/ja/function.htmlspecialchars.php)

“`php

htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get(“default_charset”) [, bool $double_encode = TRUE ]]] ) : string
“`

・特殊文字を HTML エンティティに変換する。
・第二引数は、フラグ定数でクォートや無効な符号単位シーケンス、そして文書型の扱いを指定する。 デフォルトは ENT_COMPAT | ENT_HTML401

|フラグ定数名 |説明
|:–|:–|
| ENT_COMPAT | ダブルクオートはエスケープするが、シングルクオートはしない |
| ENT_QUOTES | ダブルクオートもシングルクオートも両方エスケープする |
| ENT_NOQU

元記事を表示

DTOのススメ

# 概要

業務で以下のようなコードをよく見かけます。

– DBから取得したデータを配列でViewに渡す。
– Viewで色々制御している。

“`php
class ProductController
{
public function idAction($id): void {
$this->products = $this->get(‘product_model’)->fetchProductById($id);
}
}

class ProductModel
{
public function fetchProductById($id): array {
// DBからデータを配列で取得する
return $qb->getArrayResult();
}
}

// View

    products as $product): ?>


  • // 税込みであれば税額を足す
元記事を表示

p5jsでPokémon GOっぽいUIを作る(4)

前回までに地図、人、ボタンを雑に表示しましたが、今回は少し趣向を変えて現在地を取得することにします。

まず、地図から。位置情報をURLで渡すとYahoo地図の情報を取得して表示するスクリプトを用意します。

“`php
$lat,
‘lon’ => $lon,
‘z’ => ’16’,
‘appid’ => $appid,
‘base:red|off:address,landmark,line_name,station_name,symbol,area_name’,
‘style’ => ‘off:address,landmark,line_name,station_name,symbol,area_name’,
]);
$url =

元記事を表示

Firebase Cloud Messaging API をPHPで叩いてみた

# Firebase Cloud Messaging API をPHPで叩いてみた
仕事でFirebaseを使ってモバイルアプリのプッシュ通知機能を実装することになったため、0から一人でネットの海を彷徨いながら調べたことをつらつらと書いていきます。

## とりあえずAPI叩くには
自分の環境にcurlコマンドをインストールし、それぞれ必要な値を入力した下記コマンドをターミナルで叩いてみてください。

“`
curl -X POST –header “Authorization: key={SERVER_KEY}” \
–Header “Content-Type: application/json” \
https://fcm.googleapis.com/fcm/send \
-d @- << EOF { "registration_ids": ["{DEVICE_TOKEN}"], "notification": { "title": "{TITLE}", "body": "{MESSAGE}" }, "prio

元記事を表示

xamppを使ってMySQLに接続

# xampp とは
**xampp**とは無料でMariaDBやPHPとかをインストールできるすごいやつ。
※今回はもうインストールとか初期設定を終えたところから話が進みます。

今回は実際に使ったコマンド等をざっくりまとめていきます。
まぁいつもの感じで

***
### URL系
– テストページ的なの
[[[ http://localhost/ ]]]
– mysqlのページ
[[[ http://localhost/phpmyadmin/index.php?lang=ja ]]]
– phpを実行するときは
[[[ http://localhost/名前 ]]]をブラウザで実行

***

## コマンドプロンプトで使うコマンド
### mysqlに接続、切断

“`
C:\xampp\mysql\bin> mysql -u root -p //mysqlのあるディレクトリ内で実行

MariaDB [(none)]>  //このようになればOK
MariaDB [(none)]> exit

元記事を表示

EC-CUBE4 でテスト用のデータを生成する

EC-CUBE4 には沢山のテスト用ダミーデータを生成するコマンドが実装されています。

https://github.com/EC-CUBE/ec-cube/pull/2741

開発時にダミーデータが欲しい場合などに便利です。

### 下準備

EC-CUBE4 をインストールし、 `composer install` を実行してください.
([Composer](https://getcomposer.org/) がインストールされてない方はインストールしておいてください)

“`
cd path/to/ec-cube
composer install
“`

パッケージ版の場合は必要なライブラリが含まれていないため、このコマンドを実行する必要があります。
github から clone してきた場合は不要です。

ダミー画像生成機能を使用したい場合は、 PHP の GD Extension が必要です。

### 使用方法

以下のコマンドを実行します

“`
bin/console eccube:fixtures:generate
“`

デフォルトでは、以下のデー

元記事を表示

Symfony4でログインに失敗した場合にログに出力する

# はじめに

公式ドキュメントの[Security](https://symfony.com/doc/4.4/security.html)と[How to Build a Login Form](https://symfony.com/doc/4.4/security/form_login_setup.html)を見ながら、ログインフォームでログインをするサンプルを作成しました。

その続きとして、ログインに失敗した場合に、失敗した人のログを取得しておきたいと思います。

# 方針

[How to Build a Login Form](https://symfony.com/doc/4.4/security/form_login_setup.html)で作成した場合、LoginFormAuthenticator.phpにLoggerをインジェクションして出力したくなります。

これをしちゃうと、**認証**という機能に**ロギング**という別の機能が混じってしまうので、よろしくないようです。

Symfonyの定石としては、認証終了後に[Authent

元記事を表示

定数の必要性、意味、使い所がわからないので調べてみた【初心者】

# 定数を代入する意味がわからない

## 定数について
本に記載がある内容では
**定数とは、スクリプトの中で何らかの意味を持つ値にあらかじめ名前をつけておく仕組みであると言えます。**
と書かれています。

“`const構文.php
const 定数名 = 値;
“`

## 疑問内容(変数にする必要性はあるのか)

本を読んでいて思ったこと
「**だからなに**」「**定数にする意味とは**」

“`.php

“`

上記の文章では消費税が変わるたびに、スクリプトのあちこちにある「1.08」を変更しなければ行けないので
定数として定義をして下記のようにするみたいです。

“`.php

“`

ただ、普通に下記で良いんじゃね?とか思ってしまう。

“`.php

元記事を表示

PHP 配列関数の勉強

配列操作の勉強用メモ。

## [array_column](https://www.php.net/manual/ja/function.array-column)
・配列inputの中からcolumn_keyで指定した単一のカラムの値を返す。
・index_keyも指定すると、入力配列内のカラムindex_keyの値に基づいて結果を並び替えることができる。

“`php
array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] ) : array
“`

“`php
2135,
‘first_name’ => ‘John’,
‘last_name’ => ‘Doe’,
),
array(
‘id’ => 3245,
‘first_name’ => ‘

元記事を表示

【Laravel】テンプレートでビューを楽に作る

#はじめに
ビューファイルを作成する時にテンプレートを利用することで簡単に全体の統一感を出すことができます。
では、説明していきます
#テンプレートの使い方
まずベースとなるテンプレートの利用方法について説明します。
##テンプレートファイルの作成
`layouts`フォルダの中に`app.blade.php`のファイルを作成してください。
そして、下記の内容を記述してください。

“`html:resources/views/layouts/app.blade.php


アプリ名 – @yield(‘title’)


@section(‘sidebar’)
ここがメインのサイドバー
@show

@yield(‘content’)



“`

`@se

元記事を表示

【Laravel】カスタムページネーションで、最初と最後のページに遷移するボタンと、今のページと総ページ数を出現させる

Laravelのページネーションで、以下のように

・最初と最後のページに遷移するボタン
・今のページと総ページ数(全体ページ数)

を出現させる(使用できるようにする)方法です。

## やりたいこと

上述の通り、以下のキャプチャのようなページネーションを作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/15bc0770-453d-3240-4339-5759eda2d18d.png)

ボタンはそれぞれ、

①最初のページへのリンク
②前のページへのリンク
③次のページへのリンク
④最後のページへのリンク

となっています。

## 環境
– PHP:バージョン7.3.7
– Laravel:バージョン5.8
– OS:Windows10

## デフォルトのページネーション
まずはLaravelデフォルトのページネーションから。

![image.png](https://qiita-image-store.s

元記事を表示

Guzzleでリクエスト先から返されたエラーメッセージをtruncateさせずに取得する

Guzzleでリクエスト先からエラーが返された際、そのメッセージがtruncateされてしまい、不都合な場合があります。今回は、このメッセージをtruncateされない状態で取得してみます。

“`
PHP Fatal error: Uncaught GuzzleHttp\Exception\ServerException: Server error: `POST https://hoge.local/upload` resulted in a `500 Internal Server Error` response:
{“error”:{“code”:500,”message”:”\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u62 (truncated…)
in /hoge/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113
“`

## 対応方法

次のコードのように、

元記事を表示

PHP の RAII は幻想じゃなくなった

だいぶ前にこんな記事を書いていましたけど、

– [PHP の RAII なんて幻想](https://qiita.com/ngyuki/items/576d66110495d5f1d4ee)

どうやら PHP 7.4 では `zend.exception_ignore_args` なるオプションが増えたらしく幻想ではなくなったようです。

– https://3v4l.org/i0gXq

PHP 7.3 以前では `SplFileObject` のインスタンスが `bar` で発生した例外に掴まれて `main` まで飛んでいくので `foo` のスコープを抜けてもファイルは閉じられませんでした。

しかし PHP 7.4 で `zend.exception_ignore_args` を有効にしておけば例外によって関数の引数が掴まれることがないので、`bar` で発生した例外に `SplFileObject` のインスタンスが掴まれることはなく、`foo` のスコープを抜ければファイルは閉じられます。

以前社内で、例外がログられるときにスタックトレースの引数にセンシティブな情報

元記事を表示

LaravelでスクレイピングしたデータをSeederに逆生成してみた話

# やりたい事
– 某サイトからスクレイピングしてきたデータをDBに保存。
※某サイトからは許可を得ている。
– ローカルの開発環境でもある程度、テストデータとして、Seederは用意しておきたい。
– PHPUnitを実行する時にテストデータを作っておきたい。

# 導入方法
スクリーンショット 2019-12-24 0.19.32.png

## 1.fabpot/goutteをインストール
“`
$ composer require fabpot/goutte
“`
## 2.スクレイピングするバッチを作成
“`php

元記事を表示

OTHERカテゴリの最新記事