ダミー情報を生成する定番.

2024.03.29

Logging

ダミー情報を生成する定番を生成する定番のコードを記載します.
Composerを使用し’faker’をインストールします.

composer require fakerphp/faker

使用方法例のコードとしてcsv出力するコードを記載(下記).

<?php
require 'vendor/autoload.php';
use Faker\Factory;

class CsvGenerate{
    /**
     * ダミー情報を生成する
     * @param int $max
     * @return string
     */
    public function csvMake(int $max=0):string
    {
        $faker = Factory::create('ja_JP');
        $hasData = [];
        for($i=0;$i<$max;$i++){
            $datas = [];
            $datas[0] = $faker->name();
            $datas[1] = $faker->email();
            $datas[2] = $faker->phoneNumber();
            $datas[3] = $faker->address();
            $hasData[$i] = implode(',',$datas);
        }

        return implode(PHP_EOL,$hasData);
    }
}

print((new CsvGenerate)->csvMake(1000));
//file_put_contents('data.csv',(new CsvGenerate)->csvMake(1000));

実際使用する場合は、file_put_contents行のコメントを解除してください.
同階層にdata.csvファイルが作成されます.
尚、コマンドよりファイルを実行することを想定しています.

※参考にしたサイト
https://fakerphp.github.io/
https://qiita.com/kurosuke1117/items/c672405ac24b03af2a90

明日へ続く.

タグ

$datas, $hasData, Address, Composer, create, csvMake, faker’, gt, implode, items, lt, name, phoneNumber, php require, print, qiita.com, string, vendor,

PayjpとLaravel

2024.02.16

Logging

おはようございます、Pay.jpで商品支払いとサブスクリプションに対応したコードを書いたので記載しときます。なお、似たようなコードがネットに落ちていると思いますがどうしても似通ってしまいますね。因みにサブスクリプションの場合、Pay.jpの管理画面からサブスクリプション(プラン)の作成して名前付けしないといけません。

また、クレジットカードの記入画面はリファレンスのサンプルから作るのが早いかなって思います。そしてクレジットカードのデモ用コードもPay.jpのリファレンスかドキュメントに記載していますので、そちらを参考にしてください。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Payjp\Payjp;
use Payjp\Charge;
use Payjp\Customer;
use Payjp\Subscription;

class PaymentController extends Controller
{
    //
    public function index()
    {
        return view('payment.index');
    }

    public function payment(Request $request)
    {
        Payjp::setApiKey(config('app.secret_key'));
        // クレカトークンが送られる(tok_xxxxxxxxxxxxxxxxxxxx)
        $token = $request->input('tokenId');
        $result = Charge::create(array(
            "card" => $token,
            "amount" => 3500,
            "currency" => 'jpy',
            'description' => 'ABC商品',
            'product' => 'ABC',
            'metadata' => [
                'user_id'  => '123',
                'user_name'  => 'あいうえお',
                'email' => 'mail@abc.com'
            ]
        ));
        return back();
    }

    public function subindex()
    {
        return view('payment.subscription');
    }

    public function subscription(Request $request)
    {
        $token = $request->input('tokenId');
        Payjp::setApiKey(config('app.secret_key'));
        // 顧客情報の登録
        $customer = Customer::create(array(
            'email' => 'mail@abc.com',
            'card' => $token, // クライアントから受け取ったトークンを記載します。
            'metadata' => [
                'user_id'  => '123',
                'user_name'  => 'あいうえお',
                'email' => 'mail@example.com'
            ]
        ));

        // 課金処理
        $charge = Subscription::create(array(
            'customer' => $customer->id,
            'plan' => 'plan01', // あらかじめpay.jp側に登録しておいた値。
            'metadata' => [
                'user_id'  => '123',
                'user_name'  => 'あいうえお',
                'email' => 'mail@example.com'
            ]
        ));
        return back();
    }
}

タグ

array, Charge, config, create, Customer, index, input, lt, mail@example.com, namespace AppHttpControllers, PayJP, payment.subscription, request, setApiKey, subindex, subscription, use IlluminateHttpRequest, use PayjpSubscription, サブスクリプション, リファレンス,

Laravelのappとresolveでインスタンス。

2023.07.29

Logging

おはようございます、この頃、技術的な記事を書いていなかったのでLaravelのことについて語ります。Laravelのappとresolveでインスタンスしてくれる便利な機能があります。使い方は下記を参照してください。

$result = resolve('App\SomeClass')->someMethod();
$result = app('App\SomeClass')->someMethod();

では、これは何をするでしょうか。Factory(ファクトリー)はどんな機能なのかをBardに説明してもらいました。

LaravelのFactoryは、テストでデータベースを使う代わりに、データの生成方法を定義して、そのデータをテストで使うことができる機能です。
例えば、ユーザーモデルのテストをするときに、Factoryを使ってユーザーを生成することができます。そうすることで、データベースを使う必要がなくなり、テストが高速化されます。
また、Factoryを使うことで、テストで使用するデータの作成を自動化することができます。これにより、テストの保守性が向上します。
Factoryは、Laravelのテストを書くときに、非常に便利な機能です。
// 1つのデータを生成
$user = factory(App\Models\User::class)->create();

// 複数のデータを生成
$users = factory(App\Models\User::class, 5)->create();

appとresolveを知っていた人は恐らくFactoryも知っているかも知れません。Laravelのドキュメントを隅から隅まで読めば参考書は要らない気がします。英語がスラスラと読めるようになりたいなってこういう時に思います。

タグ

App, AppModelsUser, AppSomeClass&#39, Bard, class, create, Factory, gt, Laravel, resolve, result, someMethod, user, users, データベース, ドキュメント, ファクトリー, 生成, ,