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

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

Twitter APIでユーザーのタイムラインから、正規化表現で特定のワードが含まれたツイートを取得

#概要

Twitter APIでアプリを作成中、ユーザーのタイムラインから特定のワードを取り出す際になかなか苦労したので、その辺を記録として残しておきます。他にもやり方はあると思いますので、一つの手段として参考にしていただけると幸いです。

Twitter Developerへの登録やタイムライン取得の流れは、他にわかりやすい記事がありますので、そちらを参考にしてください。

[Twitterのタイムライン取得](https://qiita.com/hawk777/items/1986f79de455a0e8e4dd)

[Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ](https://qiita.com/kngsym2018/items/2524d21455aac111cdee)

#ユーザーのタイムラインを取得

“`
//100件のツイートを取得
$params = array(‘count’ => 100′);

// ユーザーのタイムライン取得
$tweets_obj = $twitter->get(‘statuses/user_

元記事を表示

Stripe Connectで技術記事の有料販売機能を作った

僕は趣味でCrieitというQiitaのような感じのもっとゆるいサービスを運営しています。そちらで有料記事の販売機能を開発しました。ユーザーが自由に記事を販売することが出来るようになっています。開発にはStripeという決済サービスのStripe Connectという機能を使っています。

実際の作り方や考える必要があった事などをまとめていきます。

## Stripe Connectとは

まずStripeというのは簡単にアプリケーションに決済機能を導入することができるサービスです。そしてStripeにはStripe Connectという機能があり、ECサイトや今回の技術記事のように、サービス内でユーザーに商品を販売する機能を提供することが可能になります。

サービス運営者は手数料を設定することで収益を得ることが出来ます。例えばStripe Connectを使わずに振り込みで運用する場合は一度全ての商品の支払いはサービス運営者のところに振り込んでもらい、手数料を引いた分を各販売ユーザーに振り込みする、という手間と費用がかかってしまいます。

Stripe Connectを使うとそうす

元記事を表示

【Mac】MAMP のドキュメントルートを「htdocs」から変更する方法

# MAMP のドキュメントルートを「htdocs」から変更したかった

最近 PHP の勉強をはじめました。
ローカルの環境構築は MAMP で行ったのですが、デフォルトのルートディレクトリである「htdocs」では、いろいろと面倒なことに気づいたので、
変更する方法を調べたので残しておきます。

## 環境

– MAMP : 5.7
– MacOS: Catalina 10.15.3

## 結論

– MAMP → Preferences → Web Server → Document Root から任意のディレクトリをルートディレクトリに設定することができます。

## まずは MAMP を起動する
まずは MAMP を起動する。

![BFCC6CF9-8C55-40E1-AC98-011940B79DAE.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485313/ead547ef-5303-8c4d-5a03-332b027a4d57.jpeg)

## 「Preferences」を開

元記事を表示

写真ACのダウンロード数をグラフ化したい【APIサーバー構築編】 ~1日10行コーディング~

## 5日目

### 【技術テーマ】
PHPでAPI構築

### 言語
* PHP
* JavaScript

### 目標成果物
今日は前回までにためたデータJSONで返却するAPIを作りたいと思います。

### コードと資料

#### 1. PHP,composerの環境構築

PHPのインストール

“`sh
brew install php@7.2
“`

composertのインストール

“`sh
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
“`

これでだけで完結しました。

#### 2. Lavavelでプロジェクト作成

下記のコマンドでLaravelでAPIのもととなるプロジェクトを構築します。

“`sh

composer create-project –prefer-dist laravel/laravel photo_ac_graf
“`

これだけでLaravelのプロジェクトができるので非常に簡

元記事を表示

Mandelbrot ベンチマーク(C, PHP, HHVM, Ruby, Python, and Kinx)

# Mandelbrot ベンチマーク

– 対象 … C, PHP, HHVM, Ruby, Python, and 我らが Kinx

## はじめに

この記事 [【PHP8】PHPでJITが使えるようになる](https://qiita.com/rana_kualu/items/ba312d2789bd228f887a) でのベンチマークを拝見させていただきまして。

PHP8 に JIT が入るとかで Mandelbrot のベンチマークをしているのですが、は!、これは我らが Kinx 君も `native` メソッドでブイブイ言わせられるやつでは!、との気持ちから試しにベンチマークしてみよう、という趣旨のイベントです。

記事にしたということは、**勝負になった** ということでもあります。というか予想以上。やったね!

ちなみに、Kinx って何?という方は以下をご参照ください。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)

元記事を表示

【Laravel】@errorディレクティブを使って任意のエラーをメッセージ表示する。

メモとして残します。

基本的にはブレードでは`@input`ディレクティブを使うため、エラーメッセージは自動的に生成されます。
しかしながら、配列入力のN件の入力項目で、0件の場合にエラーとする場合、エラーメッセージ用の要素を生成しなければならないと思います。
そんなときに`@error`ディレクティブが便利でした。
わざわざ、`$errors->get()`でエラーの存在を確認する必要もありませんし、スマートです。

#■やり方
指定した要素のエラーがある場合のみ、ディレクティブ内の処理をします。
また、`@error`ディレクティブ内の`$message`は特別で指定した要素のエラーメッセージが入っています。

“`php
@error(‘attrname’)

@enderror
“`

元記事を表示

【Laravel】バリデーションで任意のフィールドに任意のメッセージを設定する。

メモとして残します。

バリデーションで任意のフィールドに任意のメッセージを設定する方法をメモ。
Laravelのバリデーション便利ですが、たまにくどいエラーメッセージになってしまうことがあるため、
任意のメッセージを設定してあげましょう。
ルールごとに設定できるようです。
今回は、個人的に少しくどいエラーメッセージである`required_if`のメッセージをいじります。

#■やり方
messageメソッドをオーバライドしてあげることで、任意のフィールドに任意のメッセージを設定できる。

“`php

元記事を表示

【Auth0】LaravelでAuth0を使って認証する【Laravel】

Auth0は公式のドキュメントやチュートリアル、Q&Aがとても充実しているのですが、どれも英語で微妙に検索しにくいので自分でメモ代わりに記事を書くことにしました。

今回はLaravelでのJWT形式のアクセストークンの認証のチュートリアルに関してまとめます。
[Auth0公式チュートリアル](https://auth0.com/docs/quickstart/backend/laravel/01-authorization)

# 環境
PHP: 7.2.5
laravel: 7.0
Auth0/login: 6.0

## Auth0の設定

まずはAuth0にフリートライアルで登録して、APIを作成しましょう。
そうしたら`APIs`タブを開き、`CREATE API`から新規Auth0 APIを作成します。

スクリーンショット 2020-06-03 23.48.57.pngPHPの少数演算における切り上げ切捨て問題

http://ollie-creation.co.jp/blog/?p=1

https://gotohayato.com/content/491/

“`
// 小数点下位+1桁 指定での切り捨て処理
$strNum = round($strNum – 0.5 * pow(0.1, $decimalPoint+1), $decimalPoint+1, PHP_ROUND_HALF_UP);
// 小数点下位 指定での切り上げ処理
$strNum = round($strNum + 0.5 * pow(0.1, $decimalPoint), $decimalPoint, PHP_ROUND_HALF_DOWN);
“`

【1.5501】などの小数点下位第三位が0で且つ、第四位が0以上の場合
事前に第四位以下を切り捨てしないと、第三位での切り上げが【1.56】となってしまう。

元記事を表示

変更された項目の差分を知るための PHP の array_diff_assoc の応用小ネタ

### 概要
ユーザがあるフォームからユーザ情報を変更したとする。
「どの項目が変更されたのだろう?」 というのを簡単に知る方法はないかというところで array_diff_assoc を使った小ネタです。

例えばユーザ情報の所属が `開発部` から `プロダクト部` に変更されたとすると、
`所属`の項目が変わったのだな、と知ることができる。

### コード
“`php

$before = [‘ユーザ名’ => ‘yamotuki’, ‘会社名’ => ‘M&Aクラウド’, ‘所属’ => ‘開発部’];
$after = [‘ユーザ名’ => ‘yamotuki’, ‘会社名’ => ‘M&Aクラウド’, ‘所属’ => ‘プロダクト部’];

$changedBeforeList = array_diff_assoc($after, $before);
$changedAfterList = array_diff_assoc($before, $after);
$beforeAndAfterDiff = [];
foreach ($changedBeforeList as

元記事を表示

Laravel の Tinker で DI

Laravel では Service Provider に依存解決のルールを記述することで、 Constructor Injection のような形で DI が実現可能です。
この DI を Tinker の実行時に行う方法がすぐ出てこなかったので、そのメモです。

## TL;DR

`app()` ヘルパー関数または `App` ファサードを使えば良い。

## 例

Repository パターンを用いる際に以下のような ServiceProvider を作成した場合について考えます。

“`php:RepositoryServiceProvider.php

元記事を表示

CloudflareでGraphQLを使った話

#経緯
Cloudflareを使っていると帯域幅が気になる事はよくあると思う。
APIを利用すると便利だけど、**古いAPIはそろそろ使えなくなる**らしい。
>https://api.cloudflare.com/#zone-analytics-dashboard
>Deprecation Warning
>End of life Date: 2020年11月2日
>Please use the new GraphQL Analytics API instead: https://developers.cloudflare.com/analytics/graphql-api/.

GraphQLなど聞いた事も無いが移行するしか無い。説明を見ながらテスト。
https://developers.cloudflare.com/analytics/migration-guides/zone-analytics/
https://developers.cloudflare.com/analytics/graphql-api/tutorials/build-your-own-analytics

元記事を表示

Laravelでコマンドライン処理の単体テストを行う

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

[Laravelでコマンドライン処理を行う](https://qiita.com/toontoon/items/2015ec0deea4b11e5361)
[Laravelのタスクスケジューラを使う](https://qiita.com/toontoon/items/777c427345780411da8b)
本記事は上記が完了している前提で書かれています
上記記事で作成したクラスを使っていきます

# テストクラス作成
(1) [Laravelでコマンドライン処理を行う](https://qiita.com/toontoon/items/2015ec0deea4b11e5361)
上記記事で作成したSamp

元記事を表示

LaravelでJSONリクエスト、JSONレスポンスの単体テストを行う

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

[Laravelで入力値エラーチェック(validate)を実装する](https://qiita.com/toontoon/items/abf5c52eb0c3fe11003c)
本記事は上記の内容を理解している前提で書かれています

[LaravelでHTTPリクエストの単体テストを行う](https://qiita.com/toontoon/items/bb57147b616ec5a5038b)
本記事は上記が完了している前提で書かれています
上記記事で作成したクラスに追記していきます

# フォームリクエストの作成
/sample/app/Http/Requests/Ut2Request.php作

元記事を表示

LaravelでHTTPリクエストの単体テストを行う

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

[Laravelで入力値エラーチェック(validate)を実装する](https://qiita.com/toontoon/items/abf5c52eb0c3fe11003c)
本記事は上記の内容を理解している前提で書かれています

# フォームリクエストの作成
/sample/app/Http/Requests/Ut1Request.php作成

“`Ut1Request.php

元記事を表示

PHPでクイックソートを実装する

# クイックソートとは
**分割統治法(Divide-and-Conquer)**に基づいたアルゴリズムです。

基準値(ピボット)より大きいグループと小さいグループに分割し,分割後の要素数が1になるまで再帰的に分割を繰り返します。

[コードだけ見たい方はこちら](#phpでの実装)

### 計算量

計算量とは,実行時間を入力データ量の関数で表したものです。
O(オーダー)記法が用いられます。

クイックソートの平均計算量は **O(n logn)** で,最悪計算量は **O(n^2)** です。

なぜそうなるのかは,[計算量について](#計算量について)で簡単に解説しています。

### 処理の流れ

1. 調べる範囲の両端にポインタ( left と right )をセットし,任意のピボットを決める。
2. left はピボットより大きい値を指すまで右に進む。right はピボットより小さい値を指すまで左に進む。
3. 二つのポインタが**衝突(※)**すれば,そこで分割終了。5へ。
4. 衝突していなければ,左右のポインタが指している値を交換する。2へ。
5. 分割後の左

元記事を表示

symfonyでTODOアプリを作る

# はじめに
現場が2020年5月末で終りを迎えた。コロナ影響による無業期間の始まりである。ほんとうに仕事がない期間は初めてなのでちょっとドキドキするが向こう1年ほどの生活資金はある。そしていままでの人間関係を総動員して、広告系のWeb現場にいる友達(元同僚)からphpの案件にチャレンジしてみないか、と面談オファーが来た(持つべきものは酒を酌み交わした友である)。で、使われてるフレームワークがsymfonyって言われたんだけど、、、
おおん?日本語の資料がめっちゃすくねぇー!

# また英語なの!?
文句言ってるヒマはねぇや、やるしかねぇぇぇ
https://www.udemy.com/share/101WEaAkQadFdURHg=/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/c7c299e2-0015-16ed-9c9b-b8ad2965bf7e.png)

# TODOアプリ
Project\Php は僕が作ったフォルダで、ここでphpの作品を取り扱うことにしている

元記事を表示

echoとprintについて

echoとprintの違いについての備忘録です。

#受け付ける引数の違い
echoは値を「,」で区切ることで、複数(1以上)の引数を受け付けます。

“`php

echo ‘こんにちは’;
echo ‘こんにちは’,’竈門さん’;
“`

対してprintは単一の引数のみ受け付けます。

“`php

print ‘こんにちは’;
print ‘こんにちは’,’竈門さん’; //引数が二つなのでエラー
“`

printを用いて複数の文字列を出力したい場合は、文字列を「.」で連結して単一の文字列にすることで出力可能です。

“`php

print ‘こんにちは’.’竈門さん’; //
“`
#戻り値の違い
またechoは戻り値がないのに対して、printは戻り値が常に1です。

“`php

$hello = echo ‘こんにちは’;//エラー
$hello = print ‘こんにちは’;//文字列が出力され、$helloに1が代入される
“`

#文と式の違い
echoは文ですが、printは式です。
式と文の違いついては後日改めてまとめます。

元記事を表示

自前のResponseクラスを作ってテストしやすくする

Laravelはとても便利なので、ControllerでLaravelが提供してくれるリクエストとレスポンスのクラスを活用するだけで簡単に処理が書けてしまいます。

例えば

“`php
return view(‘view_name’, $params);
“`

このようにするとレスポンスが簡単に返せます。

ただ、これだとControllerを呼ばないとレスポンスが得られないため、`$params`の色んなパターンを試すのが面倒です。

# Responsableインターフェース

LaravelにはResponsableインターフェースというものがあります。このInterfaceを実装しているクラスをControllerから返せば、いい感じにレスポンス化してくれます。

“`php

元記事を表示

rails と比べて laravel は、、、(雑感)

#はじめに
udemy で laravel のコースを一つやってみただけなのですが、それまで勉強してきた ruby on rails を書くくときと比べて感じたことを書き残す。

# テーブル内の要素(カラム・オプション等)の変更がしやすい
laravel は、データベースの内容を変更するのが、rails と比べてかなり楽です。migration ファイルにデフォルトで、up と down のメソッドが記述されているのもかなり助かります。

railsを使っているときにめんどくさいなあと思っていたのが、テーブルにカラムを追加したり削除したり、オプションを追加したりするとき、いちいち rollback したり新しく migration ファイルを作らなきゃいけなかったりしなきゃいけないことです。

さらには、オプションを追加する際、自分で up, down のメソッドを記述しないと、後で migration ファイルを削除したくなって、rollback を使って遡ることができなくなるんです( migrate:status を down にできなくなる)。このことを全く知らずにやっ

元記事を表示

OTHERカテゴリの最新記事