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

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

Moodle 3.8 マニュアル – データベースのスキーマを確認する

[原文](https://docs.moodle.org/38/en/Verify_Database_Schema)

# データベースのスキーマを確認する

If you have been upgrading your Moodle site over several versions, it is possible (likely even) that some differences may have crept in between the database table definitions (the “schema”) in your database and the version you would get creating a new empty site. This happens because of small errors or oversights in the upgrade scripts. Most of these differences are not harmful, but some may cause strange or unexpec

元記事を表示

Moodle 3.8 マニュアル – XAMPP のアップグレード

[原文](https://docs.moodle.org/38/en/Upgrading_XAMPP)

# XAMPP のアップグレード

注意:これは進行中の作業です。完全ではなく性格でもないかもしれませんが完全にテストされています。
(訳者注: Windows という OS サーバのお話となり参考にはなりませんので項目のみを参考にしてください。)

このページはあなたが以下のことにあてはまる場合にあなたを助けることを意図しています。

* Moodle ダウンロードのページからダウンロードした XAMPP あるいは XAMPP ベースのパッケージを入れた Windows サーバー
* しばらく起動している Moodle がインストールされているものでありデータとユーザーを入れ込んだもの
* ウェブサーバー(Apache, PHP, MySQL)の全てあるいは一部に新しいバージョンへのアップグレードが必要
* Moodle 2.0 には上位のバージョンの PHP が必要
* 恐ろしい Apache のメモリリークの問題に見舞われている
* 全てのコンポーネントを最新のセキュリティの

元記事を表示

【Laravel】authorizeResourceを使いつつ未ログインユーザーに特定のアクションを許可する

## authorizeResourceメソッドとは

authorizeResourceメソッドを使うと、コントローラーのCRUDアクションに対して、一括してポリシーによる認可制御を適用できます。

“`php:app/Http/Controllers/ArticleController/php
authorizeResource(Article::class, ‘article’);
}
// 略
}
“`

## authorizeResourceメソッドと未ログインユーザー

authorizeResourceメソッ

元記事を表示

備忘録_レンタルサーバーにLaravelのプロジェクト作って、git管理する

# Laravelのプロジェクトを作る

1. composerが動く環境を用意する

※[備忘録_レンタル共用サーバーでcomposerを使う](https://qiita.com/kmymso/items/94bea6f9e91cb4710080) 参照

2. プロジェクトを作成する

`composer create-project –prefer-dist laravel/laravel ~/{プロジェクト名} “5.8.*”`

3. (動作確認用)

`ln -s {ドキュメントルート} ~/{プロジェクト名}/public`

# git管理する

1. さっき作ったプロジェクトのディレクトリに移動

`cd ~/{プロジェクト名}`

2. リポジトリ作る(ついでに、開発用ブランチも作ったりする)

“`
git init
git add -A
git commin -m “init”

git checkout -b developer

mkdir ~/git_repo
g

元記事を表示

PHP(初級編) – 変数の表示の仕方、繰り返し処理、分岐処理の書き方

変数定義や配列、if文やfor文の基本的な概念?書き方?はC言語とほとんど同じだったので省略。
以下、PHPっぽいなと思った書き方の決まりを記録します。

##変数の表示
###表示する時の変数には「$」を前につける + 改行をつける場合は「“$変数.’
‘“」と書く。
“`index.php
$i = 0;
echo $i.’
‘;
“`

##繰り返し処理、分岐処理
###if文やfor文の()内の変数は全て「$」をつける
“`index.php
for($i=0; $i<10; $i++){ if($i % 3 == 0){ ..... } ... } ``` ###breakはループを完全に抜ける、continueは現在の周だけスキップしてループは続ける ```index.php for($i=1; $i<=1000; $i++){ if($i % 3 == 0){ continue; } echo $i.'
‘;
}
“`
こうすると、iが1〜1000の間

元記事を表示

Laravel用コマンドチートシート

# Laravelプロジェクトの作成
“`
composer create-project –prefer-dist laravel/laravel プロジェクト名
“`

# 起動
“`
$ cd SampleProject
$ php artisan serve
“`

# モデルの作成

“`
$ php artisan make:model CreateModel
“`

# コントローラーの作成

“`
$ php artisan make:controller CreateController
“`

# マイグレーションコマンド系

“`
$ php artisan make:migration make_migration マイグレーションファイル作成
$ php artisan migrate マイグレーションの実行
$ php artisan migrate:refresh 全てのマイグレーションをリセットし、再度実行
$ php artisan migra

元記事を表示

比較演算子とfor構文

– while構文

“`php
$i = 1;
while ($i <= 365){ print $i . PHP_EOL; $i = $i + 1; } ``` - 比較演算子 `<=` - 不等号のこと - `A

元記事を表示

Laravel バリデーションで変数を利用

# Laravelのバリデーションで変数の使い方

##なぜ気になったのか
ECサイトを制作中に、商品をカートに追加する際にデータベース上の商品の在庫数以上の数を買い物かごに入れることができてしまう。
バリデーションを利用するときに商品の在庫数はそれぞれ異なるので固定の値は設定できない。
商品ごとにデータベースの商品の在庫数をMAXとしてそれ以上買い物かごに入れる時にはバリデーションを発動してエラーメッセージを出したかったから。

##まず試したこと
“`
$data[‘test’] = 5;
$max = 10;

$validator = Validator::make($data, [
‘test’ => ‘max:$max’,
]);
“`
これでは全くバリデーションは効かず

##ではどうするべきか。
PHPで変数を文字列内で展開したい場合は変数を`{ }`(波括弧)で囲って書くことで、文字列の中に変数があること明示している。
ただし、文字列の中に変数を入れる場合は、文字列を必ず`” “`(ダブルクォーテーション)で囲む必要がある。

元記事を表示

Laravel5.6以降のLog設定の小ネタ

config/log.phpでログを設定するようになってからの設定方法についての小ネタ。
ドキュメントに明示されておらず、StackOverflow等でもなかなか出てこないので書いておく。

## monolog driver以外でも、Formatterはconfig/log.phpで指定できる

https://laravel.com/docs/6.x/logging#customizing-monolog-for-channels
>
Monolog Formatters
When using the monolog driver, the Monolog LineFormatter will be used as the default formatter. However, you may customize the type of formatter passed to the handler using the formatter and formatter_with configuration options:

“`php
‘browser’ => [
‘dr

元記事を表示

Ruby、PHP、Java、JSでの書き方の違い

##はじめに
「Rubyでプログラミングの基礎を学んだから、次はjsやってみようかな!」

「書き方ごちゃごちゃになって、何が何だかよくわかんねー!!」

こんな人もいるのでは?

僕自身も以前、詰め込みすぎでパンパンになりましたので、書き方の違いをわかりやすくまとめてみました。
一つ一つ覚える必要はありませんので、この記事を、ストックしていただければと思います。
オブジェクト指向の理解も多少深まると思いますので、最後までご覧ください!

## 文字出力
基本となる文字の出力。言語によって処理のされ方が違うので難しいところですが、基本なのでしっかり押さえましょう。Javaはやっぱり記述が長いですねw

“`ruby:
#Ruby
puts “こんにちは”
“`
“`php:
#PHP
echo “こんにちは”;
“`
“`java
//Java
System.out.println(“こんにちは”);
“`
“`javascript
//JavaScript
console.log(“こんにちは”);
“`

## 変数代入

元記事を表示

Laravel Dusk テストコード作成時の困った場合の対処法

Laravel dusk でブラウザテストを作成していて困った部分の対処法のメモです。
間違っている箇所があればご指摘いただけましたら幸いです。

## dusk失敗の原因が知りたい
app\tests\Browser\screenshots配下に失敗時の画面スクリーンショットが作成されます。

## The MAC is invalid.
暗号化キーを再生成する → php artisan key:generate
※暗号化したパスワードが複号できなくなるので取り扱い注意
[引用]
https://error-search.com/error-post/detail/144/The%2BMAC%2Bis%2Binvalid.

## Operation timed out after 30001 milliseconds with 0 out of -1 bytes received
jsの読み込みがが遅い場合、テストの速度に画面が追い付いていない場合に出現するエラーです。
waitFor waitForText なりを入れてから検証すること。

## 要素の表示をwaitで待つ

元記事を表示

phpのスーパーグローバル変数の定義variables_orderについて

## variables_orderとは

php.iniには以下の定義があります。

“variables_order = “EGPCS”“

それぞれスーパーグローバル変数の作成をする定義をします。
それぞれ頭文字で以下を表わします。

“E“:Environment (環境変数)
“G“:Get
“P“:Post
“C“:Cookie (クッキー)
“S“:Server

## Eは指定しないほうがいいのか?

phpのバージョンによってはデフォルト値が変わってくるようです。
7.3に上げたら”GPCS”となりました。

>; This directive determines which super global arrays are registered when PHP
; starts up. G,P,C,E & S are abbreviations for the following respective super
; globals: GET, POST, COOKIE, ENV and SERVER. There is a perform

元記事を表示

【laravel】マイグレーション、やり直しコマンドいろいろ

テーブルの修正、再構築のコマンドについて簡単にメモします。

マイグレーションはそのDBのmigrationsテーブルで管理されます。
migrationsテーブルにはbatchというカラムがあり、値の順にmigrateされたことを表します。下のDBではcreate_photos_tableファイルが直近で実行されたということになります。
スクリーンショット 2020-02-05 11.51.43.png
###status
マイグレーションの状態を確認します。

“`
php artisan migrate:status

+——+————————————————+——-+
| Ran? | Migration

元記事を表示

Laravel Requestが全部string型なのを何とかする

# はじめに
弊社は

“`php
service->show($request->ge

元記事を表示

Docker環境にて、PHPのデバッグができるかどうか試しにやってみた

#はじめに
・今の職場にてPHPの開発をしているだが、デバッグができなくて困っている。苦肉の策でログを出しながら確認しているが、なんとかしたいと思い。
最近かじったDocker環境にてPHPのデバッグができる様なので、試しにやってみた。

#使用ツール
|項目 |バージョン |
|—|—|
|PC|Razer Brade Pro 2019|
|OS|Ubuntu 18.04 LTS |
|Docker |19.03.5|
|Docker-Compose |1.17.1 |
|PHP |php:7.2.7-apache (連携されているコンテナ)|
|Xdebug |2.7.0 |
|Visual Studio Code|1.41.1 |

“`dockerfile:Dockerfile
FROM php:7.2.7-apache

RUN apt-get update && \
docker-php-ext-install mysqli && \
pecl install xdebug
“`

“`yml:docker-comp

元記事を表示

while構文

while構文

“`
繰り返す条件を作るための初期化処理
while (繰り返す条件){
  繰り返したい処理
  更新処理
}
“`
↓↓↓↓↓

“`
$i = 1;
while ($i <= 365){ print $i . PHP_EOL; $i = $i + 1; } ``` - 一番重要なところは「繰り返す条件」`($i <= 365)` - ◯◯が△△になったら繰り返してください、◯◯が△△ではなくなったら繰り返しをやめてください、といった条件を記述する - 上記の場合は『$iという変数の内容が365以下の間繰り返す』と言った条件になっている - `$i`は最初どういう状態なのか? - 「初期化処理」`$i = 1;`の部分で行われる - `$i = 1`として数字の1を代入しているので、最初の`$i`の状態は 1 であることがわかる - while構文の条件である『$iが365以下』に該当するので、while構文の中括弧に入って「繰り返したい処理」が行われる - while構文は「繰り返したい処理」が終わると、元の

元記事を表示

備忘録_レンタル共用サーバーでcomposerを使う

1. 以下のリンクを参考に、composerインストール用のPHPファイルを作成
※諸事情により`php -r`が実行できん場合に限る
https://getcomposer.org/download/

“`

元記事を表示

【PHP】配列を文字列(EDI情報)化

#はじめに
EDI情報作成時に使ったロジックなので備忘録として残します。

#サンプルコード

“`php
class TestA
{
public function __construct()
{
$this->test1 = “00”;
$this->test2 = ” “;
$this->test3 = “00”;
$this->test4 = ” “;
$this->test5 = “GG”;
}
public function getTest1()
{
return $this->test1;
}
public function setTest1($test1)
{
$this->test1 = $$test1;

return $this;
}
・・・(省略)
}

class TestB
{
$test;

public function build()
{
$this->setTest(new TestA

元記事を表示

DoctrineCacheBundleが非推奨になったのでSymfonyのCacheを使うようにした

## 概要

Symfonyのアプリケーションで、キャッシュをする際に `DoctrineCacheBundle` を使っていたが、
`doctrine-bundle` が2.0系にバージョンアップしたタイミングで、
`DoctrineCacheBundle` が非推奨になっていたので、
SymfonyのCacheで実装したのと、その際に **クリアキャッシュで少しハマった話。**

## 環境

– Docker
– Symfonyアプリケーションが動作するWebコンテナ(`:443`, `:80`)
– Apache 2.4.41
– PHP 7.3.9
– Symfony 4.4.3
– PHPUnit 8.5.2
– DBコンテナ(`:3306`)
– MySQL 5.6
– Memcachedコンテナ(`:11211`)

## 実装方法

`doctrine-bundle` パッケージが 2.0系にバージョンアップしたタイミングで非推奨になった。

https://github.com/doctrin

元記事を表示

【WebAudioAPI】録音した音声をバイナリデータ化、PHPへ受け渡し

#概要
Node.js上で、IBMのWatsonによって人が話した音声データを自動で文字起こしするスクリプトを作成しました。
その中で、結構苦労した
PCのマイクに直接アクセス→録音した音声データをバイナリデータ化、PHPへ受け渡し
の部分をメモがてら貼り付け。
#環境
“`
$php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
“`
#録音部分
“`hogehoge.js
// 音声データのバッファをクリアする
audioData = [];

//様々なブラウザでマイクへのアクセス権を取得する
navigator.mediaDevices = navigator.mediaDevices || navigator.webkitGetUserMedia;

//audioのみtrue

元記事を表示

OTHERカテゴリの最新記事