- 1. 文字列関数その1
- 2. 関数とは…
- 2.1. 【Laravel】クエリビルダ whereIn whereHasを使った情報取得
- 2.2. 【Laravel】socialiteとsanctumを使った新規登録・ログイン機能
- 2.3. Bootstrap 基礎知識・基礎コード
- 2.4. PHP 文字列検索 str_starts_with()
- 2.5. 【Laravel】認証系ライブラリの簡単まとめ
- 2.6. PHP 文字列検索 str_contains()
- 2.7. 【Laravel】 独自のカスタムコマンドを作成したときのテスト
- 2.8. 【Laravel】Fakerで日本語テキストを使う方法
- 2.9. 【Laravel】配列のバリデーション
- 2.10. PHPでESRI Shapefileを出力してみた
- 2.11. ツリー構造を持つモデルをLaravelで使ってみる
- 2.12. VimeoをWordpressのPHP内で出力する
- 2.13. 【PHP】タブ区切りのcsvファイルを連想配列にする
- 2.14. オブジェクト指向 メモ
- 2.15. PHP_CodeSnifferのコーディング規約をカスタマイズする方法
- 2.16. PG見聞録 ~DB編 プリペアードステートメント~
- 3. プリペアードステートメント
オリジナルアプリ作成を通して
オリジナルアプリ作成を通しての進捗や心境をお伝えします。
# オリジナルアプリ概要
プロ野球チーム(DeNA)の選手の成績表示アプリ(通算型)
## アプリの動作
①プロ野球サイト(ヤフー)からチーム情報を取得(スクレイピング)
②取得したデータをデータベースに保存後、トップページに選手一覧を表示させる。(seederを使用)
③選手一覧画面から投手・打者別の画面に遷移
## 情報更新
情報は固定ではないので(日々更新)、herokuでアプリが落ちないように設定。(今後実装)
## 成績
成績については、すべて計算式で指定。
## ユーザー操作
特に、ユーザー登録などのページは作る予定はなく、誰でも見ることが出来るようにする。# 心境
seederの記述が分からず、迷っています。あとは後に必要になるスクレイピングの記述も今のところ考えていないので、スクールの講師の人と一緒に考えていくつもりです。
PHPには0とfalseを返す標準関数がある
## はじめに
PHPでは、値の比較をする場合は下記の比較演算子を使うことが多いと思います。
この書き方では**正しい処理ができない標準関数**があります。
“`php:sample.php
$a == true;
test() != false;
!test()
“`## 注意点
PHPの関数には、**エラーが発生した場合**に`false`を返すケース
処理に該当しない場合に`0`を返すパターンがあります。
この場合の比較には、`===`演算子を活用しましょう。> [**preg_match**](https://www.php.net/manual/ja/function.preg-match.php)
> (PHP 4, PHP 5, PHP 7, PHP 8)
>
>preg_match() は、pattern が指定した subject に**マッチした場合に1**を返します。
**マッチしなかった場合は 0** を返します。 **失敗した場合にfalse**を返します
>
> **警告**
> この関数は論理値 false を返す可能性がありますが、fal
PG見聞録 ~PHP編 文字列関数1~
どうでもいいですけどphpって大文字か小文字どっちなんでしょう。
ということで文字列を操作する関数をいくつか書いていきます!文字列関数その1
文字列を操作する関数だけでも多々あります。
文字列の長さや数を数えたり、バイト数を数えたり
大文字小文字に変換したり、検索したり、置き換えたりもできます
文字に関してはデジタルデータになると少しややこしいところがありまして
半角英数字は1バイト、日本語は全角なので2バイトになります
さらにはUTF-8やJISコードなど文字コードでもバイト数の数え方が変わってきます。“`php
PG見聞録 ~php編 組み込み関数~
関数とは…
今日から主な学習テーマとして関数について深堀していこうと思います。
PHPの組み込み関数(ビルトイン関数や内部関数ともいう)、ユーザー定義関数ですね。まずは「関数とは」ということですが
”何かしらの入力(パラメータ)を与え、予め決められた処理を行い結果を返す仕組みのこと。
パーツがパラメータ、組み立てる仕組みが関数、返ってきた結果が車みたいな感じですね。
ベルトコンベアでういーんてパーツが運ばれて機械に入っていって組み立てて車が完成するみたいな流れを想像すると分かりやすいでしょうか。
この時のパーツを引数、車を戻り値といいます。
PHPではもともといろんな関数が用意されてますね。
var_dump,print_r,defineなどなど、多くの機能が関数として用意されており、それらを呼びだすだけでプログラムが書けちゃいます。
この直感的に書けちゃうところがPHPの人気の理由の一つでしょうか。賛否ありますが自分は好きです。ちなみにifやforなどは制御構文といって関数ではないです。
【Laravel】クエリビルダ whereIn whereHasを使った情報取得
## 環境
Laravel v9.5.1 (PHP v8.1.3)## リレーション先の条件での絞り込み
organization -> user -> post
(->は1対多の関係)同じ“`organization“`に所属する“`user“`の“`post“`一覧を最新順に表示したい。
### 書き方①
“`php
$orgUsersIds = User::where(‘organization_id’, $user->organization_id)
->with(‘organization’)
->pluck(‘id’)
->toArray();
Post::whereIn(‘user_id’, $orgUsersIds)
->latest();
->paginate(25);
“`“`SQL
array:3 [
0 => array:3 [
“query”
【Laravel】socialiteとsanctumを使った新規登録・ログイン機能
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 新規登録・ログインの流れ
Slackに近い新規登録・ログイン機能の実装をやりたかった。“`
Googleアカウントでログイン
(未登録の場合)
->Googleアカウントの名前とメールアドレスで自動的に新規登録される
->トークンが発行される
->ログイン(登録済みの場合)
->トークンが発行される
->ログイン
“`## 実装
“`/auth/google/redirect“`にアクセスしたら“`/auth/google/callback“`にリダイレクトされる。
“`routes/web.php
Route::get(‘/auth/google/redirect’, function () {
return Socialite::driver(‘google’)->redirect();
});Route::controller(OAuthController::class)->group(function() {
Route::get(‘/auth/google
Bootstrap 基礎知識・基礎コード
## 本記事の内容
Bootstapについて最低限の理解を得るために必要な知識、および簡単なコード例を記載しますなお、各リンクは以下の公式ドキュメント該当箇所につなげているので、ぜひそちらも参考にしてください
https://getbootstrap.jp/
## 基礎コード
### 両端に余白を作り要素を中央にまとめる
“`html
“`### 要素を両端に配置する
“`html
~~~~~~~“`
– class属性が付与できるものであればなんでもいい(formタグとか)
– class=”row”の中にclass=”col~~”を記述することは絶対条件### グリッドを用いた中央寄せ
“`html
“`– まず
PHP 文字列検索 str_starts_with()
# 概要
– PHPの文字列検索組み込み関数のstr_starts_with()を簡単にまとめる。
# 前提
– 筆者は下記を用いて動作確認を行った。
– [https://paiza.io/ja](https://paiza.io/ja)# 組み込み関数 str_starts_with()
– 公式ドキュメント
– [str_starts_with](https://www.php.net/manual/ja/function.str-starts-with.php)
– 検索対象文字列の最初に検索文字列が存在するかの確認
– 戻り値
– 検索対象文字列内の最初に検索文字列が存在する: trueを返却
– 検索対象文字列内の最初に検索文字列が存在しない: falseを返却
– 例“`php
str_starts_with(検索対象文字列, 検索文字列);
“`– 実例(trueになる例)
“`php
【Laravel】認証系ライブラリの簡単まとめ
## 環境
Laravel v9.5.1 (PHP v8.1.3)## はじめに
Laravelでログイン機能やトークン認証をやろうとした際にそれぞれの違いがよく分からず、どれを使えばいいのか混乱したので簡単にまとめる。
(Laravelは標準で認証系のライブラリが揃ってるのがすごい。)
元々Railsをやってたので、Railsでいうとこれなんじゃないかと思うものも挙げてみた。## socialite
– ソーシャルログイン(Googleログインetc)を簡単に実装できる
– 外部サービスのアクセストークン発行とかをやってくれる
– Railsでいう“`OmniAuth“`
https://github.com/omniauth/omniauthhttps://readouble.com/laravel/9.x/ja/socialite.html
## sanctum
– APIトークンをユーザーに発行し、トークン認証をする
– Railsでいう“`devise-token-auth“`
https://github.com/lynndylanhurley/dPHP 文字列検索 str_contains()
# 概要
– PHPの文字列検索組み込み関数のstr_contains()を簡単にまとめる。
# 前提
– 筆者は下記を用いて動作確認を行った。
– [https://paiza.io/ja](https://paiza.io/ja)# 組み込み関数 str_contains()
– 公式ドキュメント
– [str_contains](https://www.php.net/manual/ja/function.str-contains.php)
– 検索対象文字列内に検索文字列が存在するかの確認
– 戻り値
– 検索対象文字列内に検索文字列が存在する: trueを返却
– 検索対象文字列内に検索文字列が存在しない: falseを返却
– 例“`php
str_contains(検索対象文字列, 検索文字列);
“`– 実例
“`php
【Laravel】 独自のカスタムコマンドを作成したときのテスト
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 独自のカスタムコマンドを作成したときのテスト
下記コマンドを作成。
“`
php artisan command:sample
“`“`php
【Laravel】Fakerで日本語テキストを使う方法
## 環境
Laravel v9.5.1 (PHP v8.1.3)## Fakerで日本語テキスト
以前、テストを書くときはFakerを使おうという記事を書いた。
https://qiita.com/kat0/items/5b7190e61df0163ee3d7
テキストのFakerを見つけたが、デフォルトだと英語のテキストになってしまう。
(第一引数に文字数指定できる)“`database/factories/PostFactory.php
public function definition()
{
return [
‘content’ => $this->faker->realText($maxNbChars = 35),
];
}
“`
Fakerを日本語に設定することで日本語テキストのFakerを入力できた。“`config/app.php
‘faker_locale’ => ‘ja_JP’,
“`
ちなみに日本語バージョンでは『銀河鉄道の夜』の文章がランダムで表示される。“`
“content”: “げしいよう【Laravel】配列のバリデーション
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 配列のバリデーション
Requestクラスでバリデーションする際に
リクエストパラメータがarrayで、そのarrayの中身のバリデーションをしたいときはワイルドカードを使う。“`php
$requestParams = [
‘post_ids’ => [1, 2, 3],
]
“`“`php
public function rules(): array
{
return [
‘post_ids’ => ‘required | array’,
‘post_ids.*’ => ‘integer’,
];
}
“`PHPでESRI Shapefileを出力してみた
# 目的
作ったシステムで、ESRI Shapefileの入出力機能を求められ、先日エクスポート(ダウンロード)機能を実装できたので、その時のメモになります。# 前提
php 7.4+Laravel 7、PostgreSQL 13+PostGISなCentOS7環境。たぶんubuntuでもいいと思う。
本人Laravel学習道半ば(かつオブジェクト指向やMVCモデルも道半ば)なので、Fat Controller作りがち。# ESRI Shapefileの入出力
[PHP Shapefile \- Gaspare Sganga](https://gasparesganga.com/labs/php-shapefile/)を使わせていただきました。
Shapefileのアップロードは、フォームで.shp, .shx, .dbfの3つのファイルを指定させ、フォーム受信したら一時ディレクトリ上に3つのファイルを置いて読ませる、という流れになりました。
Shapefileのダウンロードは、publicなディレクトリ上に出力用.shpファイルを指定したら.shp, .shx,ツリー構造を持つモデルをLaravelで使ってみる
# はじめに
E-kanの前中です。
Laravelを業務で使うようになって2年以上経ちました。
最初は見よう見まねで取り組んできましたが、整理のために備忘録を兼ねて記事にしてみました。# Eloquentでツリー構造に挑戦する
LaravelではEloquentモデルを使ってDBのテーブル同士のリレーションを定義して、関係のあるテーブルのデータをまとめて扱うことができます。
実務上では「1対多」のリレーションを使う機会が多いと思いますが、「1対多」のリレーションの応用として、ツリー構造を持つモデルを定義できないか、試してみました。
ツリー構造というのは、PCのディレクトリ構造が良く例として挙げられますが、他にも上司と部下の関係をあらわす場合などに使われます。
例えば
“`text
社長
├部長1
│ ├課長A
│ ├課長B
│ └課長C
└部長2
├課長D
└課長E
├係長a
└係長b
“`
のような構造です。
データベースで扱う場合は、以下のように上司をあらわすカラムを持つテーブルになります。
| ID | 上司 | 名前 | 役職 |
|:-:|:VimeoをWordpressのPHP内で出力する
VimeoのリンクURLは記事にそのまま突っ込めば、あとは勝手にiframeを生成してくれます。(oEmbed APIという機能)
ただ、これをPHPで出力しようと思うと別の関数に渡して上げる必要があります。# wp_oembed_getを使う
“`php
“`【PHP】タブ区切りのcsvファイルを連想配列にする
対象のcsv
“`
hoge fuga
123456 987654
234567 876543
345678 765432
“`コード
“`php
$fopen = fopen(“ファイルのパス”, “r”); // READで出力
$header = fgetcsv($fopen, 0, “\t”); // ヘッダー行だけ取れる$rows = file(“ファイルのパス”); // 行ごとの配列ができる
unset($rows[0]); // 先頭はヘッダーなので削除$list = [];
foreach ($rows as $row) {
$split_row = preg_split(“/\t/”, $row); // タブで区切って配列にする
$arr = array_combine($header, $split_row); // ヘッダーをキーとして連想配列にする
$list[] = $arr;
}
return $list;
“`結果
“`php
array (size=3)
0 =>
array (オブジェクト指向 メモ
# 概要
– オブジェクト指向の考え方を簡単に図にしたのでメモとして残す。
# 簡単なまとめ

PHP_CodeSnifferのコーディング規約をカスタマイズする方法
## 最初に
この記事は[PHP_CodeSnifferの導入方法と解説](https://qiita.com/Ken_tk/items/7c8681bf5a78f86db965)の続きになります。## コーディング規約をカスタマイズする
コーディング規約をカスタマイズをするには
下記の場所から**各種規約ルールを書き換える**必要がある。– [**CakePHP Code Sniffer**](https://github.com/cakephp/cakephp-codesniffer)
`vendor\cakephp\cakephp-codesniffer/CakePHP`– [**PHP_CodeSniffer**](https://github.com/squizlabs/PHP_CodeSniffer)
`vendor\squizlabs\php_codesniffer\src\Standards`“`xml:ruleset.xml
PG見聞録 ~DB編 プリペアードステートメント~
プリペアードステートメント
プリペアードステートメントという用語について少しおさらいしておきます。
まず何らかのクエリをPrepareというメソッドを呼んだ時点でデータベース側はそのクエリをデータベース上に事前準備します。
送られてきたクエリが正しいか、またどんなものなのかをチェックしておきます。
そうすることで実行命令がきたら、準備できてますよーってすぐ実行してくれるんですね。
この状態をプリコンパイルといいます。
こうやって事前準備しておくことで、送られてきた更新の命令が準備と異なるもの(数字しか受け付けないのに文字列が飛んできたとか)が来た場合、実行はしません。
これはSQLインジェクション対策ですね。文字列が紛れ込んで不正にデータベース操作されることを防ぎます。
また事前準備したクエリは覚えておいてくれるので、同じ構文が飛んできた場合は「ああ、さっきのやつね」て感じで演算処理をいちいち行うことはないのでパフォーマンスの向上になります。
何度も同じような内容の更新処理を行う場合などは事前準備させてお関連する記事
OTHERカテゴリの最新記事
- 2023.09.28
オープンソース調べOSS 2023年09月28日
- 2023.09.28
iOS関連のことを調べてみた2023年09月28日
- 2023.09.28
Python関連のことを調べてみた2023年09月28日
- 2023.09.28
Ruby関連のことを調べてみた2023年09月28日
- 2023.09.28
Rails関連のことを調べてみた2023年09月28日
- 2023.09.28
Python3関連のことを調べてみた2023年09月28日