PHP関連のことを調べてみた2021年05月16日

PHP関連のことを調べてみた2021年05月16日

PHP・Laravelで検索機能を実装(備忘録)

###概要
PHP・Laravelで簡単な記事投稿アプリを作成してます。
検索機能を実装したので、備忘録として残しておきます。
###ビュー

“`PHP:index.blade.php(formタグのみ記載)



“`
[bootstrapのナビバー](https://getbootstrap.jp/docs/5.0/components/navbar/)に検索フォームがあるので、該当箇所をコピペしてください。
データを渡すにはname属性が必要になるので、`name=”sear

元記事を表示

LaravelにReactとTypeScriptを導入する

## 前提
Laravelでプロジェクトを作成していて、nodeはインストール済みの想定で進めていきます。

## TypeScriptをインストールする
webpack.mix.js(webpackのラッパーライブラリ)を下記のように編集する

“`
mix.ts(‘resources/ts/index.tsx’, ‘public/js’)
.sass(‘resources/sass/app.scss’, ‘public/css’);
“`

先ほどの編集内容を反映させる

“`
npm install
“`

プロジェクト内にnode_modulesディレクトリが作成されていればOK。
一旦下記コマンドでビルドする。

“`
npm run prod
“`

package.jsonにwebpack.mix.jsで編集した内容の不足分が記載される(typescriptとsass)

## Reactをインストールする

“`
npm i -D react react-dom @types/react @types/react-dom
npm install

元記事を表示

CircleCIでテストを自動実行する

## 前提
今回は前回の記事にCircleCIを組み込んでいきます。
[DockerでLEMP環境を構築する](https://qiita.com/yu_ku/items/494c3ca16e9bb7c8924c)

## テストを作成する

“`
# Laravelプロジェクト内でテスト用の.envファイルを作成する
cp .env.example .env.testing

# APP_KEYを作成する
php artisan key:generate –env=testing
“`

.env.testingへ下記を記載する

“`
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel-test
DB_USERNAME=root
DB_PASSWORD=
“`

## テストコードを作成する

“`
php artisan make:test HogeTest
“`

下記などを参考にPHPUnitでテストを記述する
https://qiita.com/tsuuuuu_san

元記事を表示

DockerでLEMP環境を構築する

## 前提
OSはMacOSで行います。
DockerやDocker-composerは使用できる前提で進めます。

“`
docker -v
docker-compose -v
“`

## 必要なディレクトリを作成する

“`
# プロジェクトのルートディレクトリを作成する
mkdir 【ルートディレクトリ名】

cd 【ルートディレクトリ名】
mkdir docker
cd cdocker
mkdir app web db
“`

下記の構成になっていればOK

“`
【ルートディレクトリ】
└─ docker
├─ app
│ └─ Dockerfile
│ └─ php.ini
├─ web
│ └─ Dockerfile
│ └─ default.conf
└─ db
└─ Dockerfile
└─ my.cnf
“`

## docker-compose.ymlを作成する

“`
# versionはComposeファイルのバージョンでありDocker

元記事を表示

【Composer】PMPMDの導入

## はじめに

## 目次

– PHPMDとは
– 主な機能

– 導入方法

– Ruleset
– ルールセットの例

– composer scripts
– composer.json に追加

– おわりに

– 参考文献

## PHPMDとは

バグやバグの温床になりそうなコードを教えてくれる優れもの。
コマンドを打ったり `Circle CI` などを導入すれば `push` したときに自動でチェックしてくれるようになるので便利です。

#### 主な機能

・バグの検知
・汚いコードの検知
・複雑なコードの検知
・使用していない引数や関数の検知

## 導入方法
***composer*** を導入してから **「phpmd」** を導入していきます。([composer 導入方法はこちら](https://qiita.com/suzu12/items/053c8dfe72ccf7c44df3))

“`terminal:ターミナル
composer require “phpmd/phpmd=@stable” –dev
“`

これ

元記事を表示

【初心者でもわかる】パラメータ付きのURLをシェアする方法(PHP・JS)

#どうも7noteです。パラメータ付きのURLをシェアする方法をPHPとJavascriptでできる方法

URLをシェアする際にパラメータがついているURLだとうまくシェアできない場合があります。
そのような場合には、

**「パラメータ部分をエンコーディングする必要があります。」**

javascriptでエンコーディングする方法と、phpでエンコーディングする2つの方法があるので両方解説していきます。

## javascriptでエンコーディングしてシェアする方法

すでにQiitaで投稿されたものがあったので以下を参照ください。
丁寧にわかりやすく書かれていますよ。

https://qiita.com/kakuta_yu/items/73fa3e9c27032fa98e44

## PHPでエンコーディングしてシェアする方法

“`index.php

元記事を表示

Laravelの初期設定からMySQLを接続するまでの工程

Laravelでのプロジェクトを作成〜DB接続までの流れをまとめました。

## PHPのバージョン確認

“`
php -v
“`

## composerのバージョン確認

“`
composer -V
“`

## Laravelプロジェクトを作成

“`
composer create-project laravel/laravel 【プロジェクト名】 –prefer-dist “【バージョン】”
“`

## ビルトインサーバーを起動できるか確認する

“`
php artisan serv
“`

## 日本語化する
app.phpで下記の項目を修正する。

“`
‘timezone’ => ‘Asia/Tokyo’,
‘locale’ => ‘ja’,
‘faker_locale’ => ‘ja_JP’,
“`

## MySQLへ接続する
.envファイルのDB_CONNECTIONがmysqlに指定されていることを確認する。(デフォルトで指定されている)
下記でdatabase.phpのconnectionsでどのDBを呼ぶかを設定しています

元記事を表示

Laravelでダミーデータを作成する方法

## factoryでダミーデータを定義する
database/factories/【モデル名】Factory.php
下記のようにdefinition()内にダミーデータの定義を記述する

“`
public function definition()
{
return [
# fakerを使用することでランダムなダミーデータを作成できる
‘title’ => $this->faker->realText(rand(15,40)),
‘hoge_flg’ => $this->faker->boolean(10),
‘created_at’ => now(),
‘updated_at’ => now(),
];
}
“`

## seederでfactoryの定義を作成する
database/seeders/【モデル名】Seeder.php
下記を追記して対応モデルをインポートする

“`
use App\Mo

元記事を表示

PHPの文字列の結合にはドット(.)を使用する

PHPの文字列の結合にはドット(.)を使用する。

70, ‘英語’ => 90, ‘国語’ => 80);

// この下にforeach文を書いてください
foreach ($scores as $key => $value) {
echo $key.’は’.$value.’点です。’;
}

?>

元記事を表示

【MySQL】MacでMySQLを使う

# MySQLをインストール

“`
brew install mysql
“`

# ログイン/ログアウト

“`
//ログイン
mysql -u [ログインするユーザー名] -p
“`

“`
//ex)rootでログインする場合
mysql -u root (-p)

※パスワードを設定していない場合は-pは不要
“`

“`
//ログアウト
mysql> exit
mysql> quit
mysql> \q
“`
# データベースの新規作成

“`
mysql> create database [データベース名]
“`
# データベースの削除

“`
mysql> drop database [データベース名]
“`

# データベースの選択

“`
//データベース一覧表示
mysql> show databases;
“`

“`
//利用するデータベースの選択
mysql> use [データベース名]
“`

# テーブルの新規作成

“`
CREATE TABLE [テーブル名] (
id INT AUTO_INCRE

元記事を表示

Laravel+PostgreSQLでtimestampのあるテーブルデータがCarbonのtrailing dataエラーが出てしまう解決の備忘録

表題の通りのエラーを解決した忘備録。

“`
CREATE TABLE 社員s (
id SERIAL PRIMARY KEY,
user_id integer NOT NULL,
updated_time timestamp without time zone NOT NULL DEFAULT now(),
以下略・・・
“`

みたいなテーブルにおいて、
モデルでは、更新日時カラムをlaravelのデフォルトから変更して

“`
class Staffs extends Model
{
const UPDATED_AT = ‘updated_time’;
const CREATED_AT = ‘updated_time’;

“`

みたいにカラムを指定している。。。

これを表示したり保存したりしようとすると。。。

“`
“message”: “Trailing data”,
“exception”: “InvalidArgumentException”,
“file”: “/var/www/app/api/v

元記事を表示

OctoberCMS 管理画面実装テク:Laravel Auth Policyを使ってリソースの権限管理を実装する

# 概要
October管理画面は独自にPermissionという機能ごとのアクセス制御機能を備えているが、リソースごとのアクセス制御機能は提供していない。

そこでPermissionに加えて、LaravelのAuthorization Policyを使いたいと思ったが、残念ながらOctober管理画面ではPolicyをサポートしていなかったので、Policyの使い方を調べたのでメモ。

Policyでのリソースアクセス制御はUserモデル経由、ミドルウェア経由、コントローラヘルパなど、いくつかの方法で制御を実施できるが、今回はUserモデルのみ試している。

# 使用方法
LaravelはGateとPolicyの2種類を提供しているが、ロジックをまとめるためPolicyを使用する。

[ポリシーについてのLaravel公式ドキュメント](https://laravel.com/docs/6.x/authorization#creating-policies)

### ポリシーを作成する
`php artisan make:policy`は無いので、Laravelから拝借して、微

元記事を表示

PHPのアクセス修飾子 ~public, protected, privateを感覚で使ってませんか?~

## はじめに
未経験からwebエンジニアに転職し、最初の案件でPHPを利用したサービスを担当しました。
その際、プロパティやメソッドのアクセス修飾子を全く意識せずコードを書いていたことに対してレビューで指摘が、、、
レビューいただいてた先輩には感謝しかありません。。。ありがとう先輩。
当時を振り返り、再度整理する意味も含めて本記事を書くことにしました。
## 記事の目的
開発の際に正しいアクセス修飾子を利用できるようになる事で、
改修し易く、バグを生みにくいコードを実装できるようになることが目的です
## 対象
・日頃メソッド・プロパティを意識せずコーディングを行なっている方
・アクセス修飾子を感覚で利用していた方

## アクセス修飾子
アクセス修飾子とは、プロパティやメソッドにどこからアクセスできるかを指定するものです。
指定には「public」「private」「protected」の3つのどれかを指定します。
※アクセス権を明示せずに宣言したメソッドは、 publicとして扱わ

PHPでメモリ不足のエラーが表示されてしまう

## 事象
環境構築などで下記のようなエラーと遭遇しましたのでその対処法を記載します。

“`
Allowed memory size of *** bytes exhausted
“`

## php.iniを探して編集する
まずphp.iniを確認するためパスを探します。(/etc下にいることが多いです)

“`
$ ls /etc | grep php.ini
php.ini.default
php.ini.default-previous
“`

上記のようにphp.iniがない場合php.ini.defaultをコピーして編集します。

“`
$ sudo cp /etc/php.ini.default /etc/php.ini

# 作成されているか確認する
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

$ sudo chmod 644 /etc/php.ini
$ sudo vi /etc/p

【PHP】これで配列取得も自由自在!?Paizaの値取得・出力方法まとめ

Paizaの値取得・出力方法が分かりにくかったので、簡単に取得できる方法をまとめました。

##Paizaの値取得サンプルコード解説
Paizaを始めた頃は、以下のコードが何を意味しているのかよく分かりませんでした。

![スクリーンショット 2021-05-15 5.30.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591686/3aa78b3b-637e-bcb1-8e3d-1f7b92d40f91.png)

“`PHP:Paizaの値取得・出力サンプルコード

Laravel6.x 画像をリサイズしてアップロードする方法

`Auth`の認証機能で作成された新ユーザー登録に画像のアップロード機能を追加していきます。画像アップロード処理は`Intervention Image`ライブラリを使用して画像をリサイズして保存する方法をやっていきます。
画像保存するにあたってusersテーブルにimg_nameカラムを追加する
[Intervention Imageについて](http://image.intervention.io/)

## 実装環境
* PHP 7.3
* Laravel 6.20.26

## 1.Intervention Imageをインストール
まずはライブラリをcomposerを使用してインストール

“`
$ composer require intervention/image
“`

次に `config/app.php ` でプロバイダーとエイリアスに追加する。

“`PHP:config/app.php
‘providers’ => [
Intervention\Image\ImageServiceProvider::class,
],

‘aliases

Laravelで
“`

![スクリーンショット 2021-05-14 21.12.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1276481/70019a9f-791c-e838-601d-14db308dacdd.png)

このように先頭に変なスペースが出てきます。

#改善方法
・一行で書く。

たったこれだけでした。

“`edit.blade.php

“`

![スクリーンショット 2021-05-14 21.12.34.png](https://qiita-image-stor

【環境構築】Docker×Laravel×MySql

docker×laravel×mysqlを使った環境構築を行ったのでその手順をご紹介します。
初めてdockerで環境構築を行ったので、少しでも参考になればと思います。

環境

| 環境     | バージョン
|:———–|————
| PHP | 7.0.27
| FW | CakePHP3.2.13
| Apache | 2.2.15
| OS | CentOS6.9
| DB | MySQL5.6.39

手順

1. DockerフォルダDL
2. Git Clone
3. Docker コンテナに入る
4. Apache起動
5. ドキュメントルート設定
6. Composer install
7. mysql起動
8. データベース作製
9. app.phpの設定
10. データベース接続

環境構築してみよう

DockerフォルダDL

今回は元々

PDO

# PDO(PHP Data Object)
データベースにアクセスするためのインターフェイス
接続するデータベースが変更されても同じ関数を使用してクエリ(データベースへの問い合わせ)の発行やデータの取得が行えます。

PHPオリジナル問題作成2

###続き

#オブジェクト指向、インスタンスとクラス
■問題1
other/Hero.php/Heroクラスを作成。name(String型),hp(int型)のフィールドを準備し、以下のメソッド作成。
メソッド名:sit
戻り値:なし
引数リスト:int sec
処理内容:
・自分自身のhpフィールドに引数(sec)をたす。
・自分自身のnameフィールドを表示。(表示形式:nameフィールド+は+引数(sec)+秒座った。)
・引数(sec)を表示。(表示形式:HPが+引数(sec)+ポイント回復した。)

main8.phpでHeroインスタンスを生成。
nameフィールド:カズヤ(自身の名前)
hpフィールド:100
表示内容:
・sitメソッドを呼び出してください。(引数は5)
・hpフィールドを表示してください。

解答

“`php:mai8.php
//問題1