- 1. ReflectionException Class does not exist 原因まとめ
- 2. 2020年 ITカンファレンスまとめ
- 3. 【Laravel】条件付きで必須チェックの組み合わせを実現する。
- 4. Google Datastore 1500bytes制限と回避方法(PHP)
- 5. Laravel で バリデーションルールに Twitter のTweetのルールを使う
- 6. 【初学者向け】セキュリティ対策入門②〜SQLインジェクション編〜
- 7. phpbrewでCatalinaにPHP v7.0.xをインストールする
- 8. Laravelの開発環境3つとそれぞれのメリット、デメリット
- 9. javascript 別窓を開く
- 10. Laradockを使ってLaravel環境を構築した
- 11. WPプラグイン「Event Organiser」でイベント開催日を取得する
- 12. FuelPHPのORMでor演算子を2個以上つなげると後勝ちで1つのorしか判定されていなくてハマった話
- 13. PHP関連のアドベントカレンダーを持ち寄って紹介して話し合う【Web x PHP TechCafe 3杯目】
- 14. LINEbotを作成する流れ[備忘録]
- 15. 【PHP入門をローカル開発環境で学習する時の手順】【備忘録】
- 16. Moodle 3.8 マニュアル – MySQL
- 17. Moodle 3.8 マニュアル – Moodle サイトの Moodle ディレクトリ
- 18. PHP基礎構文 マジックメソッドを全て利用してみる
- 19. PHPの「define」と「const」の違い
- 20. laravelで作った画像も表示できるブックレビューの機能について ※ポートフォリオの解説です
ReflectionException Class does not exist 原因まとめ
# ReflectionException Class does not existが出現するときの原因
違う原因で何度か遭遇したのでまとめます。
1. `use`し忘れ -> ちゃんとuseする。
2. autoloaderが壊れる -> `composer dump-aoutoload`
3. sintax error -> 直す3はPHPのバージョンに寄ったりするようで、ローカルでは問題ないけど、本番環境ではエラーが発生するという事象で少し厄介でした。
# 参考
https://qiita.com/yoshinyan/items/5116bd30f2d1f2b1d865
https://qiita.com/K-Shuuun/items/c48292cd4186a2c1c8fd
2020年 ITカンファレンスまとめ
#2020年に開催されるITカンファレンス
1月20日時点のまとめです。
随時、更新していくので更新されていたら、コメントで教えてください。#言語
##PyCon JP
Pythonに関するカンファレンス
日程: 8月28日、29日の予定
場所: 大田区産業プラザPiO
[公式サイト](https://www.pycon.jp/)##PHPカンファレンス
PHPに関するカンファレンス
日程: 10月11日
場所: 大田区産業プラザPiO
[2019公式サイト](https://phpcon.php.gr.jp/2019/)
[2020公式サイト](https://phpcon.php.gr.jp/2020/)##PHPkaigi
PHPに関するカンファレンス
日程: 2月9日 16:30〜
2月10日 10:00〜
2月11日 10:00〜
場所: 練馬区立区民・産業プラザ Coconeriホール
[2020公式サイト](https://phperkaigi.jp/2020/)##JSConf
JavaScriptに関するカンファレンス
開催不明
去年
日程:1
【Laravel】条件付きで必須チェックの組み合わせを実現する。
### 「hoge 且つ fuga()」 が真の時に、hogeの必須チェックを有効にする
“`php
/**
* 条件付き必須チェックの組み合わせを実現。
* @param Validator $validator
*/
public function withValidator(Validator $validator)
{
// 「hoge 且つ fuga」の時には必須チェックを有効にする
$validator->sometimes(‘hoge’, [‘nullable’, $this->fuga()], function ($o) {
return $o->hoge == true;
});
}
“`
Google Datastore 1500bytes制限と回避方法(PHP)
#概要
Google Datatstoreは、型定義もテーブル定義もせずがんがんデータ突っ込めます。
が、デフォルトのままデータ入れていると、1500バイトを超えたところで、PHPの場合、500エラーで止まります。
エラーメッセージは、`The value of property “data” is longer than 1500 bytes` という感じ。#なぜエラーが出るか、大きなデータは突っ込めないのか。
Datastoreは、何も指定しなければ、インデックスが貼られます。
インデックスが貼られているデータは、1500バイトまでという制限があります。
つまり、インデックスを貼らなければOK#データ挿入時にインデックス対象から外す
事前のテーブル定義がないので、データ挿入時にインデックスしない、という指定をするしかなさそう。##コード
PHPのライブラリでデータをINSERTするときのコード。
以下のコードの場合、answerdetailだけインデックスしません。“`php
$dbKey = $datastore->key($GLOBALS[‘DB_prefix
Laravel で バリデーションルールに Twitter のTweetのルールを使う
#やりたいこと
Twitter連携アプリを作成しており、入力をフロントで`twitter-text.js`を使ってバリデーションしましたが、サーバー側でも行いたい。公式からはPHP向けのが公開されていませんが、PHP向けのを公開していただけている方がいるので、ありがたく使わせていただきます。
メンテンナンス頻度も高いです。#インストール
“`
composer require nojimage/twitter-text-php
“`#Laravelで独自ルール作成
“`
php artisan make:rule TwitterTextRule
“`“`php:TwitterTextRule
【初学者向け】セキュリティ対策入門②〜SQLインジェクション編〜
# 前提
## 確認環境
以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜](https://qiita.com/junkimatsuda/items/b29e496132b7fe596397)## 本シリーズの目的
以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜](https://qiita.com/junkimatsuda/items/b29e496132b7fe596397)## 本記事の目標
**SQLインジェクションの概要、原因、対策について理解すること**です。
## 本記事を読み進める上での必要事項
以下の内容を終えていることです。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜](https://qiita.com/junkimatsuda/items/b29e496132b7fe596397)また、DB及びテーブルの作成ができることと、プログラミング言語を用いてDBにアクセスする処理の流れをおおまかに理解していることです。
# 概要
## SQLインジェクションとは
**不正にSQL文を
phpbrewでCatalinaにPHP v7.0.xをインストールする
PHP 7.0系でしか動かないシステムをmacOS Catalinaで動かすためにphpbrewでv7.0をインストールしたかった
“`
brew install bzip2 zlib openssl@1.1
phpbrew install 7.0 +default+zlib=$(brew –prefix zlib)+openssl=$(brew –prefix openssl@1.1)
“`macOSの `openssl version` のデフォルトがLibreSSLになってるので、7.0のコンパイルエラーが出る。`openssl@1.1` を指定する。
“`
❯ phpbrew list
* (system)
php-7.0.17
“`“`
❯ phpbrew use php-7.0.17
❯ php -v
Laravelの開発環境3つとそれぞれのメリット、デメリット
PHPのWebアプリケーションフレームワークであるLaravelを学習しようと思って調べた際の開発環境について記載します。
ローカル環境はMacOSを想定しています。# Laravel開発環境
## Laradock
Laradockは、Laravelの開発環境をDocker Containerに閉じ込めた開発環境です。
公式: https://laradock.io/### メリット
Dockerなので、後に記載する仮想マシンとは違い実行時のオーバーヘッドが小さくなりマシンリソースを省力化出来パフォーマンスが良いです。
また、Docker上に全てを配置するためローカル環境を汚さずにクリーンに保てます。### デメリット
Dockerの扱いをある程度は把握していないと、おかしくなった開発環境を破棄して再構築するなどの操作が出来なくて困ると思いますので、Dockerの予習が必要な点に注意しましょう。
## Homestead
Homesteadは、Laravelの開発環境をVagrant BOXとして配布されている開発環境です。
公式: https://larav
javascript 別窓を開く
一応メモとして
—————————————————————
window.open(リンク先URL ,ウィンドウ名 , オプション)
width ウィンドウの幅 数値
height ウィンドウの高さ 数値
left ウィンドウの左の位置 数値
top ウィンドウの上の位置 数値
menubar メニューバーの有無 0 あるいは 1
toolbar ツールバーの有無 0 あるいは 1
status ステータスバーの有無 0 あるいは 1
scrollbars スクロールバーの有無 0 あるいは 1
resizable サイズ変更の可否 0 あるいは 1—————————————————————
別ウィンドウを開
Laradockを使ってLaravel環境を構築した
# はじめに
今更感満載ですが、 流行りの `Laravel` を `Laradock` を用いて立ててみました。
Qiitaだけでも漁るといっぱい記事が出てくる内容にはなりますが、ご了承くださいm(_ _)m# Laradockとは?
[こちら](http://laradock.io/) になります。
dockerでLaravelを動かすために開発されたプロジェクトです。
様々なPHPのバージョン、DB、ミドルウェアをチョイスすることが出来るようです。# 前提
下記モジュールがインストールされていること。
それぞれ参考記事を確認いただければ、サクッとインストール可能です。* Docker
参考記事: [DockerをMacにインストールする](https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81)
* git
参考記事: [購入直後のMacでGitコマンドを使えるようになるまで
](https://qiita.com/furusin_oriver/items/974a7b7fb8c56ad88d6e)
WPプラグイン「Event Organiser」でイベント開催日を取得する
# Event Oraniser
イベントカレンダーを作れるWordpress公式プラグイン。
ただ、デフォルトだと日付の表示が`1月 2020年`とか`25-01-2020`になってるので馴染みのある形式にフォーマットして取得します。
## 日付の表示を修正
まずはプラグインを検索して有効化します。
![スクリーンショット 2020-01-20 16.34.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570218/7b173c45-8715-5ce7-07a3-ac7885eef498.png)修正するファイルは下記
`/wp-content/plugins/event-organiser/includes/event-organiser-event-functions.php`1384行目くらい
`’titleformatmonth’ => ‘F Y年’`
↓
`’titlef
FuelPHPのORMでor演算子を2個以上つなげると後勝ちで1つのorしか判定されていなくてハマった話
FuelのORMで参照クエリを“OR“で発行する場合、以下のような条件でphpの処理的にハマった件をメモします。
“`
‘where’ => [
[
[‘hoge’, ‘>=’, 1],
‘or’ =>
[‘hoge’, ‘=’, 0],
‘or’ =>
[‘hoge’, ‘=’, null],
],
],
“`
というような条件で書いていると以下のようなselect文になるのかと思っていた。“`
// 想定していた発行クエリ
WHERE
(t0.hoge >= 1 OR t0.hoge = 0 OR t0.hoge IS null)
“`
が、実際に発行されたクエリは以下でした。“`
// 実際に発行されていたクエリ
WHERE
(t0.hoge >= 1 OR t0.hoge IS null)
“`……!!!
**OR条件**の2つ目で上書きされてあと勝ちになっているようだ。。
php的に連想配列のキーが1つなのでorのキーで後勝ちになっているのかなと予想。今回はデータ構造的にnullableにす
PHP関連のアドベントカレンダーを持ち寄って紹介して話し合う【Web x PHP TechCafe 3杯目】
# PHP × Web Tech Cafe
『Web×PHP TechCafe』は、WebやPHPに関わるITエンジニアがスキルアップのために開発や勉強、LTをするコミュニティです。オフィスをスキルアップの場としてご提供します。
本コミュニティは以下の2部構成になっています。
1. Lightning Talks 発表
2. ワーキングテーマに基づき参加者で議論connpassのページは[こちら](https://rakus.connpass.com/event/162981/)
今回は PHP × Web Tech Cafe 1月の内容をまとめてお伝えします!!
# 1. Lightning Talks
## Zvalについて
* 下記のQiita記事作成中に、PHP.net に記載されていた内容が古いことが分かったので、zvalについて改めて調べてみた
* 【PHP7.4新機能】弱参照(WeakReference)をキャッシュに使うってどういうことよ、を考えてみた
* https://qiita.com/miracle-FJSW/items/807d6
LINEbotを作成する流れ[備忘録]
参考にさせて頂いた記事
https://qiita.com/at_1016/items/9f97dc1c561182c18182# 必要な事
– LINE messaging APIに利用登録をする
– Messaging API SDK for PHPを利用しつつコーディングをする
– Herokuにデプロイする
– LINEのコンソールでWebhook設定をする# LINE messaging APIの登録
https://developers.line.biz/ja/services/messaging-api/
開発者登録・プロバイダ作成・チャネル作成をする# Messaging API SDK for PHPをインストールする
ここにPHPを書くのだが、この時に“`channel access token“`と“`channel secret“`を書き込む# Herokuでアプリサーバーを作る
GUIでも出来るし、コマンドラインからでも良い#Herokuへのデプロイ方法
“`heroku git:remote -a Heroku上のapp名“
【PHP入門をローカル開発環境で学習する時の手順】【備忘録】
【PHP入門をローカル開発環境で学習する時の手順】
[vagrant@localhost php_lessons]$〜
の状態にする迄の手順は、
https://bit.ly/30CrL6L
を参照しつつ、手順11で、cyberduck上のphp_lessonsフォルダをダブルクリック
手順13で、ターミナル上で、
$ cd php_lessons
手順14で、
[vagrant@localhost php_lessons]$〜
を確認して、完了。
補足:
画面上を綺麗にしたい場合、
$ clear
で、できます。
【index.phpをSublime Text等で編集した後ブラウザで表示させる手順】
index.phpなどのphpファイルをブラウザ上で表示させるには、Webサーバーが必要。
ローカル開発環境にもWebサーバーは入っているみたいですが、
設定が面倒なので、
今回はPHPが用意している簡易的な「ビルトインWebサーバー」を使います。
【手順】
①[vagrant@localhost php_lessons]$
Moodle 3.8 マニュアル – MySQL
[原文](https://docs.moodle.org/38/en/MySQL)
# MySQL
MySQL は Moodle のインストールを支えているデータベースサポートのうちの一つです。
内容
[1 MySQL をインストールする](#1-mysql-をインストールする)
[1.1 完全な UTF-8 サポートを設定する](#11-完全な-utf\-8-サポートを設定する)
[2 Moodle データベースを作成する](#2-moodle-データベースを作成する)
[2.1 コマンドライン](#21-コマンドライン)
[2.2 phpMyAdmin](#22-phpmyadmin)
[3 どのデータベースがどの Moodle に属しているか](#3-どのデータベースがどの-moodle-に属しているか)
[4 関連項目](#4-関連項目)# 1 MySQL をインストールする
* もしあなたが Linux を走らせているのなら、あなたの好みはあなたのパッケージマネジャーを使ってインストールするということになるべきです。これはどんな入手可能なアップデートも保証します
Moodle 3.8 マニュアル – Moodle サイトの Moodle ディレクトリ
[原文](https://docs.moodle.org/38/en/Moodle_site_moodle_directory)
# Moodle サイトの Moodle ディレクトリ
Moodle コードはそれ自身のディレクトリ(フォルダ)にファイルとサブディレクトリとともに存在しています。一般的に言って、これらは標準ダウンロードの zip ファイルにあり “moodle” と呼ばれるディレクトリに展開されるでしょう。
内容
[1 ファイル](#1-ファイル)
[2 Moodle ディレクトリ](#2-moodle-ディレクトリ)
[3 moodledata – その他のフォルダ](#3-moodledata-\–その他のフォルダ)
[4 関連項目](#4-関連項目)#1 ファイル
“moodle” ディレクトリにはいくつかのキーとなるファイルが存在します。
_config.php_ – 基本的な設定を含む。このファイルは Moodle からは出てこないです。これは install.php スクリプトが走る時あるいは手動で編集されて作成されます。
_install.
PHP基礎構文 マジックメソッドを全て利用してみる
# 前提
– 実行環境
– **PHP 7.1.32**
– 本エントリーでは、PHPが用意する全マジックメソッドに関する挙動について触れる# マジックメソッドとは
> インスタンスがある特定の条件になったときに、明示的にcallしなくても暗黙的にcallされるメソッド**引用元**:[便利だけど使いどころが難しいPHPの代表的なマジックメソッドと無名関数の使い方](https://www.atmarkit.co.jp/ait/articles/1509/03/news021.html)
– **暗黙的**にコールされる事がポイント
## __construct()
– オブジェクトが生成されるたびにコールされるメソッド
– 参考:https://www.php.net/manual/ja/language.oop5.decon.php#object.construct“`php
class Message
{
public function __construct()
{
print ‘call ‘ . __METHO
PHPの「define」と「const」の違い
どちらも定数を定義するときに使う
“`php
laravelで作った画像も表示できるブックレビューの機能について ※ポートフォリオの解説です
#こんなアプリを作りました
http://book-review123456.herokuapp.com/articles書籍のカバー画像も表示できる掲示板アプリです。画像はGoogleBooksAPIsを利用して取得します。
APIを利用した画像の取得方法については下記にまとめました ↓[laravelでカバー画像も表示できるブックレビューアプリを作った。※自分の学習用です](https://qiita.com/Shogo_S/items/7b02b7573a0c69e62bf5)
デプロイ出来れば一番良かったのですが、出来なかったのでイメージ画像と言葉で補足します。
(gitはしばらくの間はprivateにしておこうと思