- 1. はじめに
- 2. 現状
- 3. 学ぶべきこと
- 4. ? Consider adding something like array<Foo> to the PHPDoc.
- 4.1. Laravel Auditingでデータベースの変更を監視する
- 4.2. 【PHP】出したエラーの数々
- 4.3. Phoenixお気軽API開発①:PHP的ハックを応用してNode.js Express/Go的な軽量APIをPhoenixで実現してみた
- 4.4. 本日の学習内容Part3
- 4.5. WordPress プラグインの作成と管理画面の作り方
- 4.6. Mac Laravelでライブラリ「laravel-dompdf」をインストールする
- 4.7. 1分で読める GET POST 違い
- 4.8. 【PHP8.0】gettypeとget_classの悪魔合体
- 4.9. 【WordPress】カスタムブロックの作り方を書いてみた
- 4.10. tailコマンド メモ
- 4.11. ポートフォリオ
CodeIgniterのget_instance()についてまとめた
## はじめに
今回新たに参画したプロジェクトでCodeIgniterが使われていたので勉強がてらまとめてみました。
フレームワークの中身を読んでいると`get_instance()`にたどり着いたので今回はそれを題材にして記事にいたしました。## get_instance()
コントローラのメソッド内でインスタンス化されるクラスは全てCodeigniterのネイティブリソースにアクセスできます。
`get_instance()`関数を利用することによってシンプルに書くことが可能になります。– 返り値
– コントローラのインスタンスへの参照
– 返り値の型
– CI_Controller
– 関数の役割
– メインのCodeIgniterオブジェクトを返す通常、Codeigniterの利用可能なメソッドを呼び出すには`$this`を使う必要があります。
“`
$this->load->helper(‘url’);
$this->load->library(‘session’);
$this->config->library(‘base_url’)
Laravelのライブラリ「laravel-dompdf」を使ってビューの表示をPDFとして表示しよう
# 目的
– ライブラリを使用して現在のビューとして表示しているコードをそのままPDFで表示する方法をまとめる
# 実施環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Air (11-inch ,2012) |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 |
| メモリ | 8 GB 1600 MHz DDR3 |
| グラフィックス | Intel HD Graphics 4000 1536 MB |– ソフトウェア環境
| 項目 | 情報 |
| — | — |
| PHP バージョン | 7.4.3 |
| Laravel バージョン | 7.0.8 |– ライブラリ環境
| 項目 | 情報 | 備考 |
| — | — | — |
| laravel-dompdf | v0.8.6 | アプリ名ディレクトリに移動後コマンド`composer show -i | grep
laravel5.5 配列を用いたページネーション
##今回の題
Eloquent モデルとクエリビルダに対しては paginate() メソッドを使えばあっという間に実装できる。
めちゃくちゃ簡単で便利。が。
配列を使ったページネーションはどうやるんだ?と考えたときに少し苦労したので自分用にメモ。
Twitter apiで遊んでいて、取得したツイートをページ上で一覧表示させたくて使いました。##方法
LengthAwarePaginatorを使います。
~~公式のリファレンスに情報が少なすぎ……。~~“`php5
use Illuminate\Pagination\LengthAwarePaginator;//配列($array)をコレクションに変換
$array = collect($array);
$array_result = new LengthAwarePaginator(
$array->forPage($request->page, 20),
count($result->statuses),
20,
【Laravel】初学者が更なる高みを目指して学ぶべきこと
はじめに
自分のために更なるスキルアップを目指して書いてみました。
同じく簡易的なポートフォリオサイトを作れるくらいの方々の参考になれば幸いです。
※以下、私のレベル感。
現状
・基礎的なRESTfulサービスは作れる。(index,createstore,show,edit,update,destroyまで実装)
・ユーザー認証機能は実装できる。
・Eloquentの基本は理解している。
学ぶべきこと
①ミドルウェア
②リクエスト
③依存性の注入
④認可機能(ポリシー)①ミドルウェア
未ログインユーザーが投稿などできないようにするために必要。
以下はindex、show以外にアクセスしようとするとログイン画面へリダイレクトされるようにしている。
//web.php
<?php
Auth::routes();
Route:
WordPress 作成したプラグインに設定項目を追加する方法
## プラグインに設定を追加して保存できるようにする
プラグインに設定項目(オプション)を追加するには以下のことを行う。
- メニューの作成
- 設定項目の登録
- 設定画面に表示するフォームを作成```php
apache環境でのPHP について
# はじめに
CakePHP3の勉強をするついでに、環境構築をする際にApache環境でPHPをどのように設定をするのかをまとめてみようと思います。
今まで、特に意識することなくwebに落ちているコマンド叩いて、開発環境を構築できていましたが、何を設定するべきなのか、どのように動いているのかをdockerで環境構築するにあたりまとめようと思います。## 構成
- Webサーバ
- Apache2
- 言語
- php## 2つのPHP動作パターン
Apacheを動作させる方法は2パターンある- モジュール版
- Apacheの1つの追加機能としてモジュール版がある
- Webサーバーを動かすユーザー(root権限など)で動作する
- WebサーバーのプロセスのなかでPHPを実行
- CGI版
- CGI(版のPHP)を動かす各ユーザーは、Webサーバー本体を動かすユーザーとは異なる
- Webサーバーとは別のプロセスで実行
セキュリティ的にはCGIで処理速度ではモジュールが良いという話
同一Webサーバに別プロジェクトが存在するなどの場合はCG
【SEO】【canonical】重複ページ
##canonicalとは
正式なURLを検索エンジンに伝えるURLの正規化を目的としたものです。
重複ページが存在している場合は検索エンジンに優先させるべきページを伝えることができます。##重複ページとは
今回のテーマですが、重複ページの具体例を挙げると、ECサイトなどで色違いの商品がそれぞれ別urlで存在する場合や、リストの並び替えでurlが異なる場合もページの内容自体は同様で順序のみが異なるためこれに該当します。
今回は並び替えの例を紹介します。##例
`https://evsmart.net/spot/kanagawa/l141305/q141313/`
上のページでは並び替えができ、並び替え後のurlでは
`https://evsmart.net/spot/kanagawa/l141305/q141313/?p=1&l=20&o=2`
このようなパラメータがつきますが、順序が変わっているだけでページの内容としては前者と重複しているため、どちらのページもデフォルト表示の
`https://evsmart.net/spot/kanagawa/l141305/q14131
【Laravel】テストDBとしてSQLiteを設定する
###config/database.php
config/database.phpにテスト用のDBとしてSQLiteを追加します。```php:database.php
'connections' => ['testing_sqlite' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
],
```
`'database' => ':memory:'`ではインメモリの設定をしています。###phpunit.xml
phpunit.xmlに``を追加します。 ```xml:phpunit.xml
(略)PHPStan level=max で "Function myFunction() has parameter $hoge with no value type specified in iterable type array. " が発生する場合の対処法 ? Consider adding something like
array<Foo>
to the PHPDoc.> PHPStan を `--level=max` で実行すると `no value type specified in iterable type array.` と叱られ、「PHPDoc に `array
` っぽいものを書け」と言われるも、何をいっているのかわからない。 さらに「[Consider adding something like "array\
" to the PHPDoc.](https://www.google.com/search?q=Consider+adding+something+like+%22array%3CFoo%3E%22+to+the+PHPDoc.)」とググってみてもピンと来ない。 ## TL; DR
> 「引数」もしくは「返り値」の[型宣言](https://www.php.net/manual/ja/functions.arguments.p
Laravel Auditingでデータベースの変更を監視する
『誰がいつ、データをいじったか知りたい』というデータの監視が必要な時に、[Laravel Auditing](http://www.laravel-auditing.com/)が便利です。
## 概要
Laravel Auditingはデータベース上の指定した監視対象のテーブルに追加・更新・削除などの変更が行われた場合に、誰がどのような変更を行ったかを自動でログ保存するパッケージです。![outline.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9882/7283423f-56a7-dfbb-bb80-9d1ada558a4b.jpeg)
## インストール & 設定
### インストール
composerで行います。```
composer require owen-it/laravel-auditing
```### 設定
インストール後、`config/app.php`にプロバイダーを追加します。```diff:config/app.php
'providers
【PHP】出したエラーの数々
エラーが出た原因と解決法の備忘録
##シンタックスエラー
`syntax error, unexpected ';', expecting ']'`
']'付近に想定外の';'があると怒られました。
連想配列の最後にセミコロン付けてるのが原因です。```php
$result = [
'result' => 'NG',
'message' => $e->getMessage();
];// getMessage();の';'を消して解決↓
$result = [
'result' => 'NG',
'message' => $e->getMessage()
];
```
Phoenixお気軽API開発①:PHP的ハックを応用してNode.js Express/Go的な軽量APIをPhoenixで実現してみた
[fukuoka.ex/kokura.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます :bow:[前々作は「PHP的気軽さでWebアプリを作る方法」](https://qiita.com/piacerex/items/25c82153976dcb6d57c1)、[前作はこれを応用して「リアルタイムフロントであるLiveViewにも気軽さを導入」](https://qiita.com/piacerex/items/f6963b87a1bf624b506f)してみましたが、今作では、Phoenix API開発に、Node.js Express/Go的な軽量APIのテイストを付与してみます
この対応により、APIも、WebアプリやLiveView同様、ルーティング/MVCが不要になります
また、従来通りのmix phx.gen.jsonによるScaffold(≒コード自動生成)で構築されるAPIだと、JSONフォーマットがカスタマイズしにくかったり、カスタムフィールドを乗せるのにもノウハウが必要ですが
本日の学習内容Part3
##追加ボタンがクリックされたかどうか判断する
```input.php?>
```今さらながら学習記録について、その日に特に使い方を覚えておいた方がいいものを一つだけ取り上げます。
WordPress プラグインの作成と管理画面の作り方
## プラグインの作成
プラグインを作るにはプラグインフォルダを作成し、プラグインの設定項目を記入する。プラグインフォルダは、`wp-content/plugins`に作成する。
プラグインフォルダの最初のファイルはプラグイン名と同じようにする。ここでは`test-plugin.php`にした。
このファイルに最低限記入が必要なのは次のような内容。
```php
Mac Laravelでライブラリ「laravel-dompdf」をインストールする
# 目的
- Laravelのライブラリインストールが初めてだったので実施方法をまとめる
- ライブラリ「laravel-dompdf」のインストール方法をまとめる# 実施環境
- ハードウェア環境
| 項目 | 情報 |
| --- | --- |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Air (11-inch ,2012) |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 |
| メモリ | 8 GB 1600 MHz DDR3 |
| グラフィックス | Intel HD Graphics 4000 1536 MB |- ソフトウェア環境
| 項目 | 情報 |
| --- | --- |
| PHP バージョン | 7.4.3 |
| Laravel バージョン | 7.0.8 |- ライブラリ環境
| 項目 | 情報 | 備考 |
| --- | --- | --- |
| laravel-dompdf | v0.8.6 | アプリ名ディレクトリに移動後コマ
1分で読める GET POST 違い
#それでは解説していきます
##GET
ブラウザでURLを入力し検索するときにGETメソッドを使っています。
基本的には読み取り専用な機能に対して使うべきメソッドになります。
・HTTP通信で、サーバから情報を取得してくる時に使用する
・情報を検索したり取得するために使うためのもの。##POST
HTTP通信で、サーバへ情報を登録する時に使用する(データベースへの格納など)
・ツイートや記事を投稿する
・新規ユーザーを登録
・既存のデータを更新する時なんとなくこうゆうときに使うんだなあーと思っていただけばいいかなと思います!!
細かいところもあるのでぜひ他の記事やサイトで深掘りしてください:fist:
【PHP8.0】gettypeとget_classの悪魔合体
ワレハget_debug_type、コンゴトモヨロシク…
PHPにはプリミティブ型名を取得する[gettype](https://www.php.net/manual/ja/function.gettype.php)と、オブジェクトのクラス名を返す[get_class](https://www.php.net/manual/ja/function.get-class.php)という関数が存在します。
`_`があったりなかったりと命名の不統一も気になりますが、それよりgettypeはオブジェクトに使うと`object`しか返さず、get_classをプリミティブ型に使うとE_WARNINGが発生します。
いや、プリミティブ型であれば`int`とかの型が欲しいし、オブジェクトなら`PDO`とかの型が欲しいんだ、という問題に対する答えはありませんでした。というわけで両者を合体させた[get_debug_type](https://wiki.php.net/rfc/get_debug_type)というRFCが提出されました。
# PHP RFC: get_debug_type
#
【WordPress】カスタムブロックの作り方を書いてみた
## はじめに
WordPress 5.0からGutenbergと呼ばれるブロックエディターがデフォルトのエディターとして採用されました。
そのため、今後はこのブロックエディターによる開発が増えてくると思われます。個人的には、今までのWysiWygエディターに不満を感じていたわけではありませんが、ブロックエディターという選択肢が増えたことで、**できる事の幅が増えてくる** と思います。
本記事では、このブロックエディターの新規ブロック(以降、カスタムブロック)の作り方を記載して行きます。## ブロックエディターとは?
ブロックエディターは、名前の通り、HTMLをブロックように積み上げてHTMLを作成していくエディターです。詳細は、以下を参照ください。
ブロックエディターの特徴の1つとして、上記リンク先のページにも記載
tailコマンド メモ
PHP側のログを追うことになったのでメモ(FuelPhp以外だとよくわからん)
▼追記されるログを表示
tail -f ファイル名
tailf ファイル名■参考URL
https://uxmilk.jp/12218▼PHPのログ
これしか使ってない
log::info('abcdeとかとか・・なんでも日本語もいけました')■参照URL
http://fuelphp.jp/docs/1.7/classes/log.html▼Gitコマンド
普段SourceTreeでコマンドあんまり打たないからリンクだけ貼っておこう。
https://qiita.com/2m1tsu3/items/6d49374230afab251337
ポートフォリオ
#記事の概要
PHP,MySQLを使って作った掲示板アプリです。
レスポンシブ対応してあります。
#作った背景
自分の母親がピアノ教室の先生をやっていて、生徒同士や先生と生徒が気軽に情報を交換したり、質問ができるようなものを作りたいと思ったからです。
#機能
会員登録していなくても掲示板を見ることができ、会員登録することでメッセージを投稿できるようになるといった感じです。##会員登録
会員のお名前、メールアドレス、パスワードを入力します。
会員登録する際に、空欄があったり、既に登録されている会員だったり、パスワードが3文字以下だった場合は、エラーメッセージを表示するようにしました。
![sampleapp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606851/1c4d647a-d384-662d-b7cc-4726b9729e86.gif)##ログイン機能
メールアドレスとパスワードでログインができるといったシステムです。
ログインでも空欄があったり、登録されていない場合などはエラーメッ