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

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

php.iniファイルの場所をターミナルで確認する

# 確認コマンド

“`terminal
$ php -r “echo phpinfo();” | grep “php.ini”
“`

元記事を表示

[Codewars] Build Tower

## 概要

Codewarsの問題 `Build Tower` の回答の復習とベストプラクティスをまとめる個人メモです。

## 問題

数値が渡ってくるので、以下のように*の数値分の階層のピラミッドを作成する問題です。

>Build Tower by the following given argument:
number of floors (integer and always greater than 0).
Tower block is represented as *

“`
[
‘ * ‘,
‘ *** ‘,
‘*****’
]

[
‘ * ‘,
‘ *** ‘,
‘ ***** ‘,
‘ ******* ‘,
‘ ********* ‘,
‘***********’
]
“`

## 回答

規則性として、最大のアスタリスクの数は`$n * 2 -1`、アスタリスクの数が`$i * 2 -1`、空白の数が`*の最大値 – *の数 / 2`と定義できます。
数を決めた

元記事を表示

phpで簡単パイプライン関数

関数型プログラミングを学習する中でパイプライン演算子に出会い、惚れてしまいました。phpで似たようなことができないかと思い、今回の実装を行いました。

まだまだ若輩者ですのでアドバイス等いただけると嬉しいです。

## 前提
1. 単一引数の関数を対象とする
2. 中置記法が使えないので |> の形は諦める
3. array_mapみたく不格好でもいいからとりあえずpiplineぽいことがしたい

## [ソース(github)](https://github.com/poposuke1995x/php_pipeline_operator)
“`

元記事を表示

Laravel/PHP タグ付き投稿の検索機能(orWhereHasと無名関数、クロージャ)

#やりたいこと
ジャズライブの口コミをタグ付きで投稿できるサイトを、チームで開発しています。
口コミ投稿をキーワード検索するコードをネットを参考にしながら書いたのですが、一部読み解けなかった部分を整理したいと思います。

###仕様
* キーワードが入力されると、そのキーワードを含む投稿を検索しビューに表示する。
* 検索対象は、投稿の(1)タイトル、(2)本文、(3)投稿につけられたタグ。
* 投稿のテーブル、タグのテーブルはEloquentでModelを利用している。
* 投稿のテーブルとタグのテーブルが中間テーブルを挟んで多対多のリレーションでつながっている。

# 実装してみた
##コントローラの実装例
ルート、ビューなどは省略させていただきます。もし見せて!という方いたらコメントください(いないと思いますが汗)。

“`php:SearchController.php

元記事を表示

【Laravel】public/css内のCSSを読み込まないエラー 〜 net::ERR_CONNECTION_CLOSED〜

##【背景】
AWSからVagrantにローカル環境を変えて、開発を行う。
Viewを作成時に、コンパイルしたcssを読み込もうしても、Viewに反映されず行き詰まる。

##【状況の確認】

Bladeファイルのheadタグ内にCSSを読み込む記述がされているか確認。

“` “`
次にchromeの検証ツールでエラー内容を確認。エラーは検証ツール画面の右上の設定マークの横にある赤いバツ❌をクリックします。
![スクリーンショット 2020-09-07 17.47.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671576/c7e4ca9b-cfa6-e9a5-18d1-d0aca0b66a46.png)
net::ERR_C

元記事を表示

php 画像 削除

https://www.flatflag.nir87.com/unlink-819

元記事を表示

php slimのRequestオブジェクトからリクエストURLの絶対URLを取得する

# 困ったこと

PHPの[Slim フレームワーク](https://www.slimframework.com/)で開発をしていてリクエストの絶対URLが取得したかった。

# TL;DR

ストリングでキャストするとでてくる。

“`php
(string)$this->request->getUri();
“`

# 経緯

slimで開発をしていて、ちょっとリクエストされたURIをセッションに保存して、別の処理をした後に、セッションから読み出して、リダイレクトで戻りたかった。

PSR-7のRequestオブジェクトが、こんな感じで、これを自分で結合していくのは面倒。

何かよい方法あるはずって探した。

“`php

‌‌> $this->request->getUri()
‌< Slim\Psr7\Uri::__set_state(array( 'scheme' => ‘https’,
‘user’ => ”,
‘password’ => ”,
‘host’ => ‘example.com’,
‘port’ => 443,

元記事を表示

PHPからPDOを使ってSQLServerのストアドプロシージャを呼び出す際にOUTPUTが効かなくなる現象への対応

ドはまりしてしまったので、後学のためにメモを残します。

# 事象
次のようなスクリプトで、データ投入用のテーブルおよびプロシージャを作成します。

“`sql
— データ投入用のテーブル作成
create table test_table (
col1 varchar(50),
col2 int,
);

— プロシージャ作成
create procedure sample
@in varchar(50),
@out int OUTPUT
as
set @out = 567;
insert into test_table values (@in, @out);
;
“`

PDOから次のようなスクリプトでプロシージャを実行します。

“`php
$pdo = new PDO($dsn, $username, $password);
$stmt = $pdo->prepare(‘{CALL sample (?, ?)}’); // ‘EXEC sample ?, ?’でもOK
$in = ‘xyz’;
$stmt->bindParam(1, $in,

元記事を表示

PHP 多次元配列

初めてのPHPの投稿になります。
今回はPHPの多次元配列を備忘録として投稿させて頂きます。

#多次元配列とは
配列の中に配列を定義することを指します。
また、横と縦に並んでいることをイメージするとよりわかりやすいでしょう。
これを多次元配列」と呼び、よくプログラムコードでも使用される配列の形です。

#考え方
下記にて分かりやすい図がありましたので参照して下さい。
横のHairetu (0) (1) (2)から数えます。
次に縦のHairetu (0) (1) (2) (3)から数えます。
これでどこの要素を取り出したいかを指定できます。

![“スクリーンショット” 2020-10-19 22.15.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698439/844d77ad-7493-ac52-da6c-d4a1cf7057d7.jpeg)

サンプルコードを掲載します。

“`sample.php
こちらの配列は分かりやすい様に記述したものです。
0 1 2
0[[“1

元記事を表示

php クラス

https://qiita.com/7968/items/6f089fec8dde676abb5b

元記事を表示

Laravelで超シンプルなToDoアプリを作成する

# はじめに
Laravelで超シンプルなToDoアプリを作成する手順を紹介します。
ToDoアプリは、CRUD(Create, Read, Update, Delete)の操作を兼ね揃えた最もシンプルなアプリの一つと言えます。
そのため、学習したい言語やフレームワークを用いてToDoアプリを作成することで、その言語やフレームワークを用いたデータの作成・読み取り・更新・削除といった基本操作を一通り学習することができます。

Laravelを用いてToDoアプリを作成するチュートリアルは公式のものも含めて既にいくつかあると思いますが、この記事では超シンプル・必要最低限の機能だけに絞ったToDoアプリを作成する手順を紹介します。
まずは最低限のToDoアプリを作成してみてLaravelのCRUDアプリ作成の勘所を押さえ、そこから自分が欲しいと思う機能を少しずつ加えながら学習を更に進めるのが良いと思います。

# 作成するアプリの概要
## 画面構成
超シンプルにしてLaravelによるCRUD操作に内容をフォーカスしたいので、CSSはほぼ設定していません。
見た目はイケてませんが、そこは機

元記事を表示

PHP 7(.4)のDockerコンテナ(fpm-alpine)にphp-mecabを導入してPHPでMeCabを使う

DockerのPHPイメージにMeCabとmecab-ipadic-NEologdを導入して、PHPから使えるように設定する方法を紹介します?

PHPフレームワークやWebサーバーを導入せず、PHPでMeCabを使えるかどうかまで確認します。ここで導入できたら必要なものを追加しましょう✨

PHPのイメージは次を用いて確認しています。

“`dockerfile:Dockerfile
FROM php:7.4.12-fpm-alpine
“`

## docker-composeの設定

起動・終了を簡単にするためdocker-composeを用います。次の `docker-compose.yml` をプロジェクトのルートに作成します。

* PHPコンテナにMeCabをインストールしてカスタムでコンテナを作るため、新規作成するDockerfileの場所を`build`の`dockerfile`で指定します
* `volumes` にはPHPでMeCabを使うサンプルスクリプトを配置するホスト側のディレクトリとコンテナ側のディレクトリをマウントします
* PHPのコンテナを

元記事を表示

Laravel8 CRUD処理を使った投稿アプリを作成する その4 投稿一覧ページの作成

# 目的

– 投稿された内容の一覧を表示するページの作成を行う

# 実施環境

– 筆者の実施環境を記載する。
– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.8 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする]() |
| Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→[Mac Laravel

元記事を表示

Carbon で1週間の日付と曜日を取得する

PHPのCarbonで、日付と曜日(日本語)のリストを取得する方法をシェアします。

### 実行環境

– `Laravel Framework 6.18.23`
– `”nesbot/carbon”: “2.0”`

### 取得したい結果

“`
array: [
0 => “10/18 (日)”
1 => “10/19 (月)”
2 => “10/20 (火)”
3 => “10/21 (水)”
4 => “10/22 (木)”
5 => “10/23 (金)”
6 => “10/24 (土)”
]
“`

### ソースコード

Laravelの `config/app.php` で `’locale’ => ‘ja’` の設定しておく。

“`php
$numOfDays = 7; //日付を取得する日数

$dt = new Carbon();
$format = ‘MM/DD (ddd)’;

$week[0] = $dt->today()->isoFormat($format);

//Carbonのイン

元記事を表示

Moodle 3.9 マニュアル – バルクユーザーアクション

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

# バルクユーザーアクション

管理>サイト管理>ユーザー>アカウント>一括ユーザーアクションの一括ユーザーアクション機能では、管理者がフィルターを作成してユーザーを選択し、以下のいずれかのアクションを実行することができます。

・[電子メールベースの自己登録](https://docs.moodle.org/39/en/Email-based_self-registration)で作成された、ユーザーによってまだ確認されていないユーザー アカウントの確認
・メッセージを送信する([メッセージング](https://docs.moodle.org/39/en/Messaging)が必要です)
・ユーザーアカウントの削除
・ページにユーザーの一覧を表示する
・ユーザーデータをテキスト、ODS、またはExcelファイル形式でダウンロードできます。
・ユーザーにパスワードを強制的に変更させる
・ユーザーを[コホート](https://docs.moodle.org/39/en/Coh

元記事を表示

Moodle 3.9 マニュアル – カテゴリ:登録

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

# カテゴリ:登録

コース内のロール (通常は学生) にユーザーを割り当てるプロセスである登録 (または登録) に関するドキュメントページのインデックス。
カテゴリ「登録」のページ

全60ページのうち、以下のページがこのカテゴリに該当します。

B

Banner LMB

C

Capabilities/enrol/category:config
Capabilities/enrol/category:synchronised
Capabilities/enrol/cohort:config
Capabilities/enrol/database:config
Capabilities/enrol/guest:config
Capabilities/enrol/imsenterprise:config
Capabilities/enrol/ldap:manage
Capabilities/enrol/manual:config
Capabilities/enrol/ma

元記事を表示

Moodle 3.9 マニュアル – 新規ユーザーの追加

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

# 新規ユーザーの追加

内容

[1 新規ユーザーの追加](#1-新規ユーザーの追加)
[2 一般](#2-一般)
[2.1 ユーザー名](#21-ユーザー名)
[2.2 認証方法](#22-認証方法)
[2.3 一時停止されたアカウント](#23-一時停止されたアカウント)
[2.4 パスワードを生成してユーザに通知する](#24-パスワードを生成してユーザに通知する)
[2.5 パスワード](#25-パスワード)
[2.6 ファーストネーム](#26-ファーストネーム)
[2.7 ラストネーム](#27-ラストネーム)
[2.8 メールアドレス](#28-メールアドレス)
[2.9 電子メールの表示](#29-電子メールの表示)
[2.10 電子メールのフォーマット](#210-電子メールのフォーマット)
[2.11 メールダイジェストタイプ](#211-メールダイジェストタイプ)
[2.12 フォーラムの自動購読](#212-フォーラムの自動購読)
[2.13 フォーラムのト

元記事を表示

DateTime::formatメソッドに指定するフォーマットを無意味に長くすると,不具合を引き起こしやすい.

## TL;DR

– `index.html`という文字列をフォーマットとして `\DateTime::format()` メソッドに引き渡したところ,`i801Asia/Tokyox.013108Saturday` という出力が生成された.
– `format()` メソッドに指定するフォーマットは,必要最低限とする.変換されない文字列と誤認して、`n`, `e`などを指定してしまうと面倒なことになる.
– 自分の想定通りに動くか,細かい単位で動作確認・テストを行う.

## 環境

– PHP7.2
– Ubuntu18.04 LTS

## 経緯

今日の日付情報を保持した `\DateTime` クラスからディレクトリパス(文字列)を `format()` メソッドを用いて生成し,それをキーとして指定してS3にファイルをアップロードするという処理にて,予期せぬ挙動が発生しました.
DateTime
具体的には,

– 2020/08/index.html

というパスにファイルを自動でアップロードしたかったものが

– 2020/08/i801Asia/Tokyox.0131

元記事を表示

【実装編】Laravel 8(+jetstream, fortify)でマルチログイン

# はじめに
この記事ではLaravel8でマルチログインの実装をしていきます。
動作環境、詳しい仕様は[前回の記事](https://qiita.com/nasteng/items/c6c026c3448a07a7fd15)をご覧ください。
前回でUserのログイン機能とAdminモデル、テーブルの作成まで完了しました。
なお、本プロジェクトはGitHubにアップしてありますので[ご参考](https://github.com/nasteng/multi-auth)ください。

# マルチログイン実装
– 一度ルーティングを確認してみる
– `php artisan route:list`でルーティングを確認してみると、すでにUserの認証に必要なルーティングが設定されています。これはLaravel Fortify内部の/{your-workspace-root}/multi-auth/vendor/laravel/fortify/routes/routes.phpで定義されています。Userの認証関係のルーティングはこちらに全て任せることにしましょう。
– log

元記事を表示

【準備編】Laravel 8(+jetstream, fortify)でマルチログイン

# はじめに
Laravel8から標準のユーザー認証機能がlaravel/uiからLaravel Jetstream + Laravel Fortifyに変更されました。新しい認証機能もlaravel/uiと同様に導入自体は非常に簡単で、かつ多機能(プロフィール管理、チーム管理、二段階認証などなど)、必要に応じてconfigファイルで利用する機能を選択することが可能です。その一方で認証処理の実装が変わっていることもあり、拡張するには少し手間がかかります(ました)。[ドキュメント](https://readouble.com/laravel/8.x/ja/authentication.html)では下記のように言及されていますが、
>Laravel Jetstreamが用意する認証スカフォールドを使う必要はないことに留意してください。このスカフォールドを使用しない選択をした場合、Laravelの認証クラスを直接使用し、ユーザーの認証管理を行う必要があります。

せっかくならば新しい認証機能使いたいぞ!
ということで、本記事では一般ユーザーと管理者ユーザーでログイン画面、ログイン後の画面

元記事を表示

OTHERカテゴリの最新記事