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

PHP関連のことを調べてみた2020年11月16日
目次

EC-CUBE4 ServiceクラスOrderHelperの拡張方法

EC-CUBE4のOrderHelper.phpの拡張する機会がありましたので、その方法をご紹介します。

# Step1. services.yamlに追記
*app/config/eccube/services.yaml*に以下のような記述を追記します。

“`yaml:services.yaml
services:

Customize\Service\*任意のファイル名*:
decorates: Eccube\Service\OrderHelper
“`

以下に自分の例を置いておきます。

“`yaml:services.yaml
services:

Customize\Service\OrderHelper:
decorates: Eccube\Service\OrderHelper
“`
# Step2. Customize/Serviceフォルダ内に拡張ファイルを用意
*app/Customize/Service/*に上記で指定したファイルの作成をする。

“`php:OrderHe

元記事を表示

Laravel ページネーション 検索条件が引き継がれない

検索条件が引き継がれない問題発生

検索機能を実装して、ページネーションで次のページに遷移したとき検索条件が引き継がれない
問題が発生して解決したので記事にしました。

検索をかけて、URLを確認すると,下記のように表示されています。

category_id=1&page=1
//検索フォームで検索した結果

そして、2ページ目に遷移すると、

page=2
//ページ遷移した結果

あ、category_id=1が消えていました。
現状、bladeのページネーションのコードを確認すると下記のように設定されています。

 
{{ $projects->links() }}

下記のように変更すると、ページ遷移してもcategory_id=1&page=2
のように引き継がれました。

 
{{ $projects->appends(request()->input())->links() }}

参考記事

https://blog.dododori.com/cr

元記事を表示

[PHP]staticについて学習してみた

# はじめに
 業務でPHPを使うことが多いのですが、static変数をなんとなく使っていたり、他のメソッドとの違いがわからずずっとモヤモヤしていたので、この機会に学習しようと思いました。

 学習前は、staticをつけるとクラス内のどこからでもメソッドや変数を呼び出すことができるという認識だけです。グローバル変数と何が違う?使うメリットって?どういう場合に使う?など頭の中に?しか浮かばない状況です。

 学習用の備忘録として記事を残して行きます。間違ってるところがあれば指摘していただければと思います。

##クラスとインスタンス
 static変数を理解するにはクラスとインスタンスの概念を理解する必要があります。

> – クラスは、ある実体を生成するために定義された概念のようなもの。よく設計図に例えられる。
> – インスタンスは、クラス(設計図)を基に作られた実体のこと。

 僕は、クラスはたい焼きの型で、インスタンスはその型から作られたたい焼きと覚えています。一度設計図を定義してしまうと、再利用もでき、たい焼きの中身をあんこにしたりカスタードクリームにするなどカスタムすること

元記事を表示

LaravelでMySQLにログインするまで

今日はLaravelでMySQLにログインするまでを説明します!

#開発環境
macOS Big Sur 11.0.1
composer 2.0.7
Laravel Framework 8.13.0
PHP 7.3.22
MySQL 8.0.22

#.envの編集
.envファイルの編集をしていきます

“`:.env(編集前)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
“`

`DB_DATABASE`,`DB_USERNAME`,`DB_PASSWORD`をそれぞれ変更、修正します。(名前は適宜変更してください)

“`:.env(編集後)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_test
DB_USERNAME=test_user
DB_PASSWORD=pass
“`

今回はこのように設定しました。

#

元記事を表示

PHPでゴッドオブジェクトを作らないためにできる3つの対策

# はじめに
この記事はLaracastsという動画学習プラットフォームの講座シリーズ「[Whip Monstrous Code Into Shape](https://laracasts.com/series/whip-monstrous-code-into-shape)」の下記エピソードをまとめたものです。
「[God Object Cleanup #1: Pass-Through](https://laracasts.com/series/whip-monstrous-code-into-shape/episodes/4)」
「[God Object Cleanup #2: Traits and Socks](https://laracasts.com/series/whip-monstrous-code-into-shape/episodes/5?autoplay=true)」
「[God Object Cleanup #3: Value Objects](https://laracasts.com/series/whip-monstrous-code-into-shape/e

元記事を表示

※学習用メモ デザインパターン:Strategy編[PHP]

# Strategyパターンとはどういうものか

Strategyとは**戦略**という意味です。
このパターンはアルゴリズム(戦略)を実行する際に、どのアルゴリズムを使用するか選択できるというものとなります。

>Strategy パターンは、アプリケーションで使用されるアルゴリズムを動的に切り替える必要がある際に有用である。Strategy パターンはアルゴリズムのセットを定義する方法を提供し、これらを交換可能にすることを目的としている。Strategy パターンにより、アルゴリズムを使用者から独立したまま様々に変化させることができるようになる。(wikipediaより)

共通のインターフェースを定義することで、使用側(クライアント)はそのインターフェースに伴った処理を実行すればよいので、具体的な実装に依存することがなくなります。

## どういう時に使用可能なのか
・アプリケーションで使用されるアルゴリズムを動的に切り替える必要がある場合

[参考サイト]
https://ja.wikipedia.org/wiki/Strategy_%E3%83%91%E3%82%BF%E3

元記事を表示

【PHP】Windowsでツールを作ってみよう(準備編)

#はじめに
PHPと言えばブラウザ上で動くサーバ用のプログラミング言語というイメージがあるかと思いますが、
ローカル環境で使えるツールなども手軽に作成することが出来ます。
ここではPHPを使用してWindows環境で使えるツールを作成していきたいと思います。

#PHP開発環境構築
まずはPHPの開発環境を構築します。
XAMPPをダウンロード

下記URLへアクセスします。
https://www.apachefriends.org/jp/index.html
![qiita_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/b325f7a9-69f7-1db0-3187-92cdb0476a86.png)
ページ中段辺りの「Windows 向け XAMPP」をクリックすると、exeファイルがダウンロードできます。

2.ダウンロードしたexeファイルをダ

元記事を表示

Humhubのカスタムモジュールの作り方(静的な情報ページを表示するモジュール)

# はじめに

今回は、Humhubが拠り所としているYii2フレームワークの、いわゆるMVCモデルに従った、静的な情報ページを作成してみる。目標は、ユーザーのプロファイルページに情報を表示するモジュールを組み上げることだ。Humhubの公式ドキュメントには、この説明はない。Yii2のドキュメント[Yii2.0決定版ガイド:モジュール](https://www.yiiframework.com/doc/guide/2.0/ja/structure-modules)のページと、[前回までに解説してきた記事](https://qiita.com/tomofu74/items/7e9e002310d8b14bb612)とを合わせて以下を読んでいただきたい。

# モジュールについて

あらためてYii2.0決定版ガイドを読むと、モジュールについては次の通り記述されている。

モジュールは、モデル、ビュー、コントローラ、およびその他の支援コンポーネントから構成される自己充足的なソフトウェアのユニットです。
モジュールが アプリケーション にインストールされている場合、エンド・

元記事を表示

EC-CUBE4 プラグインのテンプレートを上書きする方法

EC-CUBE4のバージョン**4.0.5**にアップデートによって、プラグインのテンプレートを直接編集することなく*app/template*フォルダ内で編集することが可能になりました。

# 実装方法
このようなプラグインのファイル配置のとき、

“`
[app/Plugin/Sample]

├── Controller
│ └── Admin
│ └── Controller.php
├── Resource
│ └── template
│ └── admin
│ └── config.twig
“`

*app/template/plugin/Sample/admin/config.twig*に配置することで、こちらを優先して読み込まれます。

“`
[app/template]

├── admin
├── default
├── plugin
│ └── Sample
│ └── admin
│ └── config.twig
└── user_data
“`

#サン

元記事を表示

Zabbixのログイン画面「Cannot start session.」

Zabbixのログイン画面が表示されない。

“`:エラー
Cannot start session.
“`

# sessionの所有者は?
[PHPのアップデートで`session`の所有者が変わる事象](https://higherhope.net/?p=3341)があるらしい。

“`
ll /var/lib/php/
合計 16
drwxrwx— 2 root apache 6 10月 28 01:22 opcache
drwxr-xr-x 2 root root 6 10月 28 01:22 peclxml
drwxrwx— 2 root apache 12288 10月 28 01:22 session
drwxrwx— 2 root apache 6 10月 28 01:22 wsdlcache
“`

nginxを使っているので、nginxユーザに変更してあげると解決

“`
chown -R nginx:nginx /var/lib/php/
“`

元記事を表示

Permission(アクセス権限)について

注意:この記事ではセキュリティに関する変更を加える記事になっております。この記事を元に発生した問題や損害に対しては、当方一切の責任を負いませんので、コマンドなどを実行する場合は必ず自己の責任が及ぶ範囲内でお願いいたします。

###この記事で出てくる用語
`file_put_contents()` → PHPを実行した際に、指定されたパスのファイルに内容を加える。
`file_get_contents()` → PHPを実行した際に、指定されたパスのファイルの内容を呼び出す。
`Permission` → ディレクトリやファイルを操作する時の権限。(日本語で再帰的)

先日、PHPの学習をしている時に、`file_put_contents()`と`file_get_contents()`を使用する場面があったのですが、そこでハマってしまったので解決方法を残しておきます。

結論から言うと`Permission`の問題でした。

##Permissionの確認方法
筆者が使っているのは

元記事を表示

「Qiita」と「WordPress」のRSSを取得して、PHPで静的HTMLに表示する方法

#外部サイトのRSS情報を取得して表示させる方法

参考にしたページはこのあたり。
>PHPで外部サイトのRSS情報を取得して表示させる方法。 – 株式会社オンズ
>https://on-ze.com/archives/1615
>
>新着情報を受け取る!PHPでRSSを取得する方法 | TechAcademyマガジン
>https://techacademy.jp/magazine/18803

これで「Qiita」の記事を新着情報に表示させたい的なことをやろうとして、
サンプルはその通りにしたら表示されるのですけど、
「Qiita」のRSSフィードだと上手く行かなくてですねー、

結論として言うと
ページによって「RSSフィード」の形式が違うのが原因でした。

##output-rss-qiita.php
それで「Qiita」のRSS形式に合わせた
RSSフィードを取得して表示する「.php」がこちら

“`php

元記事を表示

PHP8.0からはin_arrayの第3引数のtrueを付け忘れても、意図しない挙動が防げるようになる

# TL;DR
“`php

元記事を表示

配列変数 と 連想配列 初学者が初学者向けにまとめた

どうも。
今まで掲示板等々を学習がてら作成してきましたが、5ヶ月というスパンで焦り走りしてきた事で
「フワッとした理解」で「〇〇機能は〇〇で実装できるだろう」と何となく分かるものの、Google先生の力がなければこれ一つ自分で実装できない僕が、
一つ一つの細かな理解が疎かであることから、
これから基礎の基礎を深く理解するためにアウトプットの場としてQiitaに投稿していきます。

自身でGoogle先生を活用して数十サイトや書籍を参考に理解を深めながら、
1、、実際にコードを書いて
2、、ノートに自分の言葉でいつかの自分が見ても伝わるようにまとめていく
3、、最後にQiitaに他の方が見ても分かるよう伝えていく

※間違い部分、誤解している箇所が出てくる可能性もあります。

[配列とは]

複数(プロパティ)のデータをまとめて整理して1つの大きな箱にいれるイメージ。
![333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677104/701939f0-44ad-f6f9-17f6

元記事を表示

Laravel Mixを使用してSCSSを導入してみよう

## 開発環境
– Laravel 8.0
– php 7.3
– laravel-mix 5.0.1

#はじめに
今回はlaravelにSCSSを導入してから実際にコンパイルするまでの流れを記事にしています。
※すでにLaravelプロジェクトを立ち上げている前提での手順になりますのでご了承ください

##Laravel Mix
> Laravel Mixとは、フロントエンドのアセットをコンパイル、バンドルしてくれるツール。
ツールの中身はwebpackを利用している

webpackを使うと何がいいの?

・依存性を解決できる
・リクエスト数を減らすことができる

SCSSを導入するにあたって本記事ではLaravel Mixを使用します。
すでに、package.jsonにLaravel Mixは最初から記述されているためターミナルでnpm installしちゃいましょう

$ npm install

__次にwebpack.mix.jsを開いてみるとこんな感じになってます__
> webpack.mix.jsとはwebpackというJ

元記事を表示

バリデーションのメッセージ カスタマイズしてみた

バリデーションのメッセージカスタマイズ

validation.phpの中エラーメッセージを変更せずに、オリジナルのバリデーションメッセージを
設定してバリデートメッセージを出せたので記事にしました。

基本的には英語ですが、validation.phpの中に設定されています。
日本語版は下記から確認できます。
https://readouble.com/laravel/5.6/ja/validation-php.html

一部ですが、こんな感じでバリデーションメッセージが設定されています。
attributeは好きなように設定できます。

'required'=> ':attributeは必須です。',
'unique'   => ':attributeは既に存在します。',

 'attributes' => [
 'first_name'=>'姓名',
 'last_name'=>'姓名',
]

下記のようにバリデーションを設定できます。
このように設定すると、first_name、last_nameが空欄の場合、
姓名は必須です。など

元記事を表示

【Laravel】リダイレクトの書き方メモ

– リダイレクト定義の書き方について。

“`php:リダイレクトの基本
// httpの場合
return redirect(‘test/index’); // http://xxxxx/test/index
return redirect()->to(‘test/index’); // ↑と同義
return redirect(‘test/index’, 301); // ステータスコードを指定する場合(※ デフォルトは、302)
return redirect(‘test/index’, 301, [‘test-header’ => ‘テスト’] ); // HTTPヘッダー を追加する場合

// httpsの場合
return redirect(‘test/index’, 302, [], true); // https://xxxxx/test/index

// ルート名での指定
return redirect()->route(‘test.list’);
return redirect()

元記事を表示

PHPで湯婆婆を短く書く

#はじめに
この投稿は @Nemesis さんの [Javaで湯婆婆を実装してみる](https://qiita.com/Nemesis/items/c7192a7c510788d2cba2) をはじめとした湯婆婆ムーヴに乗っかったものです。
@TD12734 さんの [HTMLで最も短い湯婆婆(記事内で試せます)](https://qiita.com/TD12734/items/743e90fb867fee8c562e) に触発されPHPでも短く書けないか試してみました。

#とりあえず普通に書く
“`php

元記事を表示

コマンドなしでGithubにコードをアップロードして、Github Desktopに追加する方法

こんにちは、くりぱんです。

## この記事で実現できること
1. Githubにコードをアップロードできる
1. Github Desktopにアップロードしたリポジトリを追加できる

## 開発環境
– OS:MacOS
– Git:2.29.2

## 説明
私は個人開発や個人学習のために、Githubへコードをアップロードしています。
また、コードを簡単に管理できるように、Github Desktopを使用しています。
今回は、Githubへコードをアップロードしてもらい、Github Desktopを使用してコードを管理できるようにする方法を説明していきます。

## 簡単実装
###実装準備
Githubのアカウントを下記から取得してください。
https://github.com/

Github Desktopを下記からダウンロードしてください。
https://desktop.github.com/

###Github
– まずは、Newをクリック
![スクリーンショット 2020-11-15 0.52.14.png](https://qiita-image-st

元記事を表示

スクレイピングでアクセスできない時の対処法(php)

#はじめに
php 7.3
スクレイピングでアクセスできない場合をまとめました。
curlを使用しました。

##リダイレクトされる
ページURLが変更されてリダイレクトされている場合です。
この場合は、オプションでリダイレクト先へ飛ぶようにします

“`php:test.php
$curl = curl_init();
$options = [
CURLOPT_URL => ‘URL’,
CURLOPT_CUSTOMREQUEST => ‘GET’,
CURLOPT_FOLLOWLOCATION => true, //リダイレクトを辿る
CURLOPT_MAXREDIRS => 10, //リダイレクト数
CURLOPT_AUTOREFERER => true, //リダイレクトした際のRefererのURLを自動セット
];
curl_setopt_array($curl, $options);
$response = curl_exec($curl);

元記事を表示

OTHERカテゴリの最新記事