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

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

Moodle 3.9 マニュアル – アクティビティ選択ツール

[原文](https://docs.moodle.org/39/en/Activity_chooser)

アクティビティ選択ツールとは何ですか?

コースの編集がオンになっていて、「アクティビティまたはリソースの追加」リンクをクリックすると、アクティビティの選択画面が表示されます。

[!(http://img.youtube.com/vi/HVNJJfjjwDQ/0.jpg)](http://www.youtube.com/watch?v=HVNJJfjjwDQ)
アクティビティ・チューザー

各項目には、お気に入りに登録するためのスターアイコンと、より詳細な情報やドキュメントを表示するための情報アイコンがあります。

![StarInfo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470368/8fd01522-3b37-ba01-17c8-3ecf278bc2f7.png)

[新機能
Moodle 3.9で!](https://docs.moodle.org/39/en/Ca

元記事を表示

PHPの関数が使用前に定義しなくても呼び出せるのはなぜか

[PHPの関数は使用前に定義しなくても呼び出せる](https://qiita.com/taro-hida/items/f3068e4310a9cf9cc5e7)という記事を書いてる途中にふとなぜそのような仕様になるのか疑問に思い,調べてみました.

**注意:この記事は筆者が途中で力尽きたため,しっかりした根拠のある結論が出ていません.ご了承の上お読みください**

調べた過程やリンク先について共有します,こちらについては役に立てるかと思います.

# 疑問

PHPはインタプリタ言語のはずなのに,定義前の関数を呼び出しても正常に呼び出せるのはなぜ?

# 調べてわかったこと

## Zend OpCodesっていうのに一回コンパイルされるらしい

「how it works」をつけて調べてみました.以下の説明が非常にわかりやすかったです.

https://www.quora.com/How-does-the-PHP-interpreter-work/answer/Gaurav-Kumar-956?ch=2&srid=uBQqa0

あくまで推測ですが,この「Zend OpCod

元記事を表示

PHPの関数は使用前に定義しなくても呼び出せる

有名な話だと思いますが,自分用まとめです.途中で気になって内部仕様について深堀りもしましたが途中で力尽きています.ご了承ください.

# 関数の定義より先に,その関数を呼び出すコードを記述することができる

以下のコードはエラーなく動作します.

“`

元記事を表示

Moodle 3.9 マニュアル – 最近の活動のブロック

[原文](https://docs.moodle.org/39/en/Recent_activity_block)

# 最近の活動のブロック

内容

[1 ユーザーが最後にコースにアクセスしてからのアクティビティの表示](#1-ユーザーが最後にコースにアクセスしてからのアクティビティの表示)
[2 最近の活動の完全なレポート](#2-最近の活動の完全なレポート)
[3 サイト管理の設定](#3-サイト管理の設定)
[4 ケイパビリティ](#4-ケイパビリティ)
[5 関連項目](#5-関連項目)

# 1 ユーザーが最後にコースにアクセスしてからのアクティビティの表示

一人を除いた全員が部屋を出て、出て行った人が一つだけ変更して、戻ってきた全員が変更したものを見つけなければならないゲームを知っていますか?

最近のアクティビティブロックを有効にすると、参加者が最後にコースにアクセスしてからの更新情報が表示されます。

これがないと (あなたがわざわざ参加者に通知しない限り)、学生や同僚は修正や追加などの変更を見逃してしまいます。

最近の活動ブロックは重要なことを見落としているの

元記事を表示

PHP Version 5.4.31 から PHP Version 7.4.10 への移行でつまずいた事まとめ

PHP Version 5.4.31 から PHP Version 7.4.10 への移行にあたって、つまずいた事をまとめてみました。

この記事では Windows 10 Pro にインストールした、pleiades-2020-09-ultimate-win-64bit-jre_20200920.zip を使っています。

# PEAR::Auth
## PEAR::Auth のインストール

“`
pear install -a Auth MDB2 MDB2#MysqliAuth
“`

でつまずきました。

[xamppのPHP、pearのupgradeをしてみる、DBを入れてみる件](https://qiita.com/SadayukiOsafune/items/cb78cef12b15e032ecb1)
を参照して、解決しました。

## .htaccess の修正

“` .htaccess(修正前)

php_value auto_prepend_file “include/MyAuth.php”

元記事を表示

Moodle 3.9 – コースFAQ

[原文](https://docs.moodle.org/39/en/Course_FAQ)

# コースFAQ

内容
[1 コースの説明にある教師の名前を削除するにはどうすればよいですか?](#1-コースの説明にある教師の名前を削除するにはどうすればよいですか)
[2 編集していない教師の名前をコースの説明に追加するにはどうすればよいですか?](#2-編集していない教師の名前をコースの説明に追加するにはどうすればよいですか)
[3 私のコースの中には、コースの概要が表示されているものもありますが、情報アイコンしかないものもあります。どうして?](#3-私のコースの中には、コースの概要が表示されているものもありますが、情報アイコンしかないものもあります。どうして)
[4 コースにファイルをアップロードできません。 「ファイルタイプを受け入れることができません」というメッセージが表示されます](#4-コースにファイルをアップロードできませんファイルタイプを受け入れることができませんというメッセージが表示されます)
[5 教師が特定のリソースやアクティビティを追加できないようにするにはど

元記事を表示

【Laravel】get〜Attributeメソッド

##はじめに
今回はLaravelのget〜Attributeメソッドを利用して、欲しい値を加工する方法をまとめたいと思います。

##アクセサについて
>アクセサを定義するには、アクセスしたいカラム名が「studlyケース(Upper Camel Case)」でFooの場合、getFooAttributeメソッドをモデルに作成します。以下の例では、first_name属性のアクセサを定義しています。first_name属性の値にアクセスが起きると、Eloquentは自動的にこのアクセサを呼び出します。

参考:[Eloquent:ミューテタ 8.x Laravel](https://readouble.com/laravel/8.x/ja/eloquent-mutators.html)

##get〜Attributeメソッドの実装例

“`php:

元記事を表示

マトリクスのパターンを網羅するロジックの書き方

## この記事を書いた理由
よくテスト実施の際に以下のようなパターンを網羅するための表を書くことがあると思う。

|Aデータ|Bデータ|
|—|—|
|○|○|
|○|×|
|×|○|
|×|×|

このパターン網羅をコーディングテストをする際に必要になることがある。
これをプログラミングで書くまでが結構大変だったのでメモしておく。

## プログラム

以下のように書くとパターン表がざっくり取得できる。

“`php
= 0; $j–) {
if ($i & (1 << $j)) { echo '×'; } else { echo '○'; } } echo PHP_EOL; } ``` 「<<」や「&」はシフト演算子である。 2進数で値をシフトすることによりパターン網羅の処理が格段に簡単になる。 上記の出

元記事を表示

[PHP]UTF-8で多言語をファイル出力する際に文字化けする

PHPでUTF-8で中国語をテキストファイルに出力すると、開くアプリケーションによって文字化けが起こる事象に遭遇した。

## 元のプログラム

“`php5

元記事を表示

Laravel8でのルーティングで、コントローラーの指定の仕方4選

すごい久しぶりにqiita。
久しぶりにLaravel触ろうと思ったらLaravel8が出てて、試してみる。
Laravel7以前のと比べてRouteの書き方変わってたのでメモ。
(ぜんぜん大した話じゃないけどまだインターネッツに残っていないと思ったものは積極的に残すスタイル。)

# 前提: 今までの書き方

“`php
Route::get(‘hoge/fuga’, ‘Hoge\FugaController@index’);
“`
Laravel7までは有効。Laravel8ではエラーになります。

# 1: 教科書どおりがいい派

“`php
use App\Http\Controllers\Hoge\FugaController;
Route::get(‘hoge/fuga’, [FugaController::class, ‘index’]);
“`

使うクラスはすべてuseで指定しておいたほうが見通しがいい人向け。

# 2: useうざい派

“`php
Route::get(‘hoge/fuga’, [App\Http\Controllers\Hoge\Hu

元記事を表示

LambdaでLaravelのコマンドを定期実行する

Laravelで書いたバッチを実行するにあたって、EC2インスタンスだと実行タイミング以外もコストがかかるし、ECSタスクだとコンテナの管理がちょっと面倒。Lambdaで動かせればメンテも楽だし安く上がりそうなのでやってみた。

## 前提

brefphp を導入済の環境。

実行するのは Laravel で作成済みのコマンド、“`croncmd:exec“`。通常は “`php artisan croncmd:exec“`で実行。

brefphp の導入については [brefphpを使って簡単にLaravelをサーバレス環境で動かす – Qiita](https://qiita.com/YuK1Game/items/ff7744478339c09151d5) がとてもわかりやすいです。

## serverless.yml

今回は “`serverles.yml“` の設定のみです。例として月曜から金曜まで 09:00-17:00まで5分ごとに定期実行する設定を記載します。

input 部分で実行するコマンドを、rate で実行タイミングを指定します。時間について

元記事を表示

配列内スペースを余分にとってソースの見栄えをよくする

PHPを使っているとよく配列を使うのですが、keyと要素を揃えて書くのが好きです。

人により好みが分かれるところだと思いますが私の場合以下の二つであれば下の書き方(sample2.php)を好みます。

“`sample1.php
$input = array
(
“id” => 1,
“name” => “sato”,
“postal_code” => “000-0000”,
“address” => “Tokyo”,
“phone_number” => “09012345678”
);
“`

“`sample2.php
$input = array
(
“id” => 1,
“name” => “sato”,
“postal_code” => “000-0000”,
“address” => “Tokyo”,
“phone_number” => “09012345678” // 揃っていて見やすい!
);
“`

しかし後から長い要素が

元記事を表示

phpMyAdminがやたらに遅い。

# phpMyAdminのテーブル一覧表示が遅い時に取った対応
phpMyAdmin(Ver.4.0.10.20)を業務上必要だったので、設定してみたのですがテーブル一覧表示がやたらに遅い。。。テーブル一覧表示がされるまでに3分近くかかる。いつもかかる。

## $cfg[‘MaxExactCount’]と$cfg[‘MaxExactCountViews’]の設定
いろいろ調べると、config.inc.phpの**$cfg[‘MaxExactCount’]**と**$cfg[‘MaxExactCountViews’]**の設定値を「0」にしてテーブル一覧表示のレコード数を正確に取らなければいいとの事。

“` php
$cfg[‘MaxExactCount’]=0;
$cfg[‘MaxExactCountViews’]=0;
“`

設定してみました。でも、**全然変わりませんでした。**
いろいろ、config.inc.phpの設定を変えたり、ブラウザのcookieやキャッシュをクリアしたり、ブラウザを変えたりしたのですが、結果は変わりませんでした。
原因が特定できず、仕方なく

元記事を表示

javascriptのLocalStorage を使ってお気に入り機能を自作してみた ③実装編-組み込み-

# どうも7noteです。プラグインより多機能なお気に入り機能を作成。前回の続き

①準備編がまだの方は[こちら](https://qiita.com/7note/items/d6b7ad72fbdfab790641)
②実装編-基盤作り-がまだの方は[こちら](https://qiita.com/7note/items/b4643f752fcf1412324d)

wordpressで自作のお気に入り機能を使いたい人は[こちら](https://qiita.com/7note/items/7a314671c720df2483d0#%E3%81%8A%E3%81%BE%E3%81%91-php%E7%B7%A8-wordpress%E3%81%AE%E6%8A%95%E7%A8%BFid%E3%81%AB%E5%BF%9C%E7%94%A8)

## 実運用レベルで使ってみる(コピペで動くよ)

押したらお気に入りに追加。もう一度押したら削除されるように作ります。

**完成イメージ**

![movie.gif](https://qiita-image-store.s3.ap-nor

元記事を表示

ChromeOSでPHP開発

ChromeOSのLinux(Crostini)を使って開発マシンに仕上げる方法のメモ。

> (メモ) PlayStoreが使える環境のChromeOSであればAndroidアプリのTermuxを使うほうが開発環境を作るには適していると思った。[こちらを参照♪](https://qiita.com/kujirahand/items/8e34e05e7296134b55cd)

以下、ChromeOS 86に基づいた内容。

# [1] Linux(Crostini)を有効に

ChromeOSの設定から、Linux(beta)「Crostini」を有効に。

# [2] Port転送を有効に

Port転送で例えば、8888を有効にしておく。

# [3] aptでPHPをインストール

“`sh
sudo apt update
sudo apt install php php-mbstring php-sqlite3
“`
# [4] phpのテストサーバーを起動

開発したいWebアプリのディレクトリにcdで移動。
その上で、PHPの開発用サーバーをポート8888で起動する。

元記事を表示

【Laravel】whereHasでリレーションのネスト先を検索条件として指定する方法。

自分用のメモとして残します。

リレーションのネスト先。
言い方を変えるとリレーション先のリレーション?のフィールドをwhereHasで検索する方法です。

#■やり方
リレーションの定義は割愛させていただきます。
withと同じようにピリオドでリレーションのチェーンをします。

“`php
$query->whereHas(‘user.phone’, function($query) use($cond) {
$query->where(‘phonename’, $cond[‘phonename’]);
});
“`
 

元記事を表示

PHPで日、月、年の加算と減算方法

特定の日付を元に明日の日付や1週間後の日付、一時間後の時間などの日時の加算や、昨日の日付や昨年の日付などの日時の減算の方法です。
PHPのstrtotime関数やDateTimeクラスを使えば簡単に取得できます。

※先月の日付を取得する際は、月末日の関係でおかしな日付になることもあるので注意!

##strtotime関数

strtotime関数の詳細は[こちら](https://www.php.net/manual/ja/function.strtotime.php)を参考にしてください。
`YYYY-mm-dd`は元となる日付です。

###PHPで日付の加算をする
“`php
echo date(“Y-m-d”, strtotime(“YYYY-mm-dd 1 day”));
echo date(“Y-m-d”, strtotime(“YYYY-mm-dd 1 month”));
echo date(“Y-m-d”, strtotime(“YYYY-mm-dd 1 year”));
echo date(“Y-m-d”, strtotime(“YYYY-mm-dd 1 wee

元記事を表示

Laravel gmail Connection could not be established with host smtp.gmail.com 原因と対策

# laravelでメールを送りたい
gmailを使おうとすると

“`
Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error
“`

というエラーが発生するようになった。
ちょっと前までは同じ設定でうまく言っていたのに突然使えなくなった。

# 設定確認

## laravel

“` \.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=xxxx@gmail.com
MAIL_PASSWORD=xxxx
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=xxxx@gmail.com
MAIL_FROM_NAME=xxxx@gmail.com
“`

## gmail
安全性の低いアプリは許可
https://myaccount.google.

元記事を表示

TwitterOAuthを使用してフォロー,RT,いいねをする

#前提
https://twitteroauth.com/
のドキュメントを参考にcomposerからインストール
https://developer.twitter.com/
から申請しAPIキーを取得

#(最低限の)前提知識
スクリーンネームとユーザーID
・スクリーンネーム -> @hogehoge 的なID,いつでも変更できる
・ユーザーID -> 絶対に変えられないID  ※今回はユーザーIDを利用する
・API(アプリケーションインターフェース) -> 認可サーバーのID
・アクセストークン ->twitterが出した「ここまでの範囲なら利用していいよ!」ってやつ
詳しくはhttps://booth.pm/ja/items/1296585
の書籍を参考にしてください

“`php:test.php

元記事を表示

PHP クラス名::classはどういう処理??

# 目的

– 実務のコードで`クラス名::class`という処理を見つけてパッと意味がわからなかったので備忘録としてまとめる。

# すみません

– 備忘録としてのメモ的要素が大きいため多少見ずらい記事になるかもしれません。すみません。

# `クラス名::class`とは

– 公式ドキュメントによると名前を解決しているらしい。
– [公式ドキュメントリンク](https://www.php.net/manual/ja/language.oop5.basic.php#language.oop5.basic.class.class)
– 簡単に言うとクラスの場所を出力してくれるキーワードである。
– 例えば下記のようにPHPのコードが書かれていたとする。

“`php

元記事を表示

OTHERカテゴリの最新記事