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

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

PHP array_key_exists関数

# 目的

– 便利そうな関数だったので自分用に使い方をざっとまとめてみる

# 前提情報

– 下記のサービスを用いて関数の振る舞いを確認した。
– [https://paiza.io/ja](https://paiza.io/ja)

# 機能

– 指定した文字列が指定した配列に格納されていることを判定する関数である。

# 例

– 下記にarray_key_exists関数の例を記載する。

“`php
//配列に文字列が含まれているかを確認する処理、含まれていればtrueが返される。
array_key_exists(文字列, 配列);
“`

# 具体例

– 配列`$array`に「str_1」というインデックスが存在していることを判定する処理を記載する。
– 格納されている場合trueを、格納されていない場合falseを返す。

“`php
array_key_exists(‘str_1’, $array);
“`
– 下記の様な処理が実行された場合「str_1の要素が存在します」と出力される。

元記事を表示

【Wordpress】標準テーマの Powered by WordPress を書きかえる

WordPressの標準テーマはシンプルで使いやすいですが、企業のウェブサイトで利用する場合など、フッターの「Powered by WordPress」を削除したい場合が多々あります。

# CSSでパワードバイを非表示にする

これまでは、アップデート時の影響を考慮してテンプレートを直接編集することは避け、追加CSSに以下を記述して非表示にしていました。

“`
.powered-by-wordpress {
display: none;
}
“`

# プラグインでパワードバイを書きかえる

上記の方法だと、非表示にするだけ自由に編集はできません。
また、HTML上には Powerd by WordPressの文字が残ったままになります。

そこで、パワードバイを書きかえるプラグインを作成しました。
[Elvez Edit Powered By(プラグインのダウンロードページ)](https://wordpress.org/plugins/elvez-edit-powered-by/)

screenshot-1.png

元記事を表示

【Laravel】メール送信機能

#はじめに
問い合わせフォームで問い合わせがあった場合に、内容をメールで通知するシステムを組んだ際の備忘録。

**LaravelのMailableクラスを利用し送信します。**

#ファイル構成
app
 |- Http
 |  |- **SendController.php**
 |
 |- Mail
   |- **SendMail.php**

resources
 |- views
   |- contact
     |- **mail.blade.php**

**.env**

#コード
##Controller
`send`メソッドの引数に、`Mailable`クラスを継承したクラスを渡す。

“`php:SendController.php

元記事を表示

AWS IoT CoreのShadowをPHPのSDKを用いて取得

AWS IoT CoreのShadowはIotDataPlaneClientのGetThingShadow()で取得できます。

公式サイトには以下サンプルが記載されています。
https://docs.aws.amazon.com/ja_jp/aws-sdk-php/v3/api/api-data.iot-2015-05-28.html#getthingshadow

“`php
$result = $client->getThingShadow([
‘shadowName’ => ‘‘,
‘thingName’ => ‘‘, // REQUIRED
]);
“`

しかし、$clientのオブジェクトの生成方法が書いていない。。。

$clientのオブジェクト生成方法は以下です。

“`php
$client = new IotDataPlaneClient(
array(
‘version’ => ‘latest’,

元記事を表示

ログイン機能と投稿機能の作成(PHP+MySQL)

#記事の概要

作成したポートフォリオの解説です。以下をまとめています。

– 背景
– 主な機能
– 開発手順
– 工夫点
– 課題

#背景

ポートフォリオ作成にあたり、「Udemy」というサービスを用いて基礎を勉強しました。
勉強期間1~2週間
https://www.udemy.com/course/completeweb2_jp/

#スペック

言語
PHP 7.4.2
javascript
DBMS
MySQL 5.7.26
開発環境
MacOS Catalina 10.15.5
MAMP 5.7
ライブラリ
jquery
フレームワーク
Bootstrap 4.2
バージョン管理
Git 2.24.3
本番環境
xse

元記事を表示

PHP・GCの話-1話) なぜGarbageCollection? メモリとGCを意識する

## 前書き

– すべての記事は、自分の勉強目的と主観の整理を含めています。あくまで参考レベルで活用してください。もし誤った情報などがあればご意見をいただけるととっても嬉しいです。
– 内容では、省略するか曖昧な説明で、わかりづらいところもあると思います。そこは、連絡いただければ補足などを追加するので、ぜひ負担なくご連絡ください。
– 本文での「GC」は、「Garbage Collection, Garbage Collector」の意味しており、略語として使われています。
– この記事は、連載を前提に構成されています。

**※ 連載目録**
> – PHP・GCの話-1話)なぜGarbageCollection? メモリとGCを意識する(←現在の記事)
> – PHP・GCの話-2話)変数の管理情報、zval containerとreference count ⇨ 準備中
> – PHP・GCの話-3話)変数データのメモリからの消滅 ⇨ 準備中
> – PHP・GCの話-4話)MemoryLeakと解除できない変数データ ⇨ 準備中
> – PHP・GCの話-5話)GC登場。GC

元記事を表示

Laravelのインストール、初期設定、GitHubの使用

## Laravelのインストール
Laravelのインストールには専用インストーラを使用する方法とComposerを利用する方法の2つがありますが、今回はComposerでのインストールを行います。
DBはMySQLを使います。
PHPとphpmyadminが使える環境を前提に進めます。

### Composerのインストール
ComposerはPHPのパッケージ管理ツールです。
下記のサイトからインストールできます。
[Composer](https://getcomposer.org/)

### Composerのインストール確認
下記のコマンドを実行してバージョンが表示されればインストールできています。

“`:terminal
composer –version
//composer -vでも可
“`

### Composerのパッケージインストール時間の短縮

#### packagist.jpの使用
海外に向いているリポジトリを、日本の有志の方が運用をおこなっているリポジトリ( https://packagist.jp/ )に向ける事でインストールにか

元記事を表示

PHPの配列は値が変更されるまで複製されないことの確認

PHPの配列は擬似基本型

PHPにおいて配列はオブジェクトのような参照型ではなく
数値や文字列と同じように基本型のように振る舞う

しかし内部的には参照型であり
値が変更されることで値が複製されることによって
あたかも基本型であるような振る舞いをしているだけである

確認

まずは大きめの配列を作って
同じ配列を10回別の配列に追加してみる

“`php
>8).”KB
“;
$arr = [];
for($i=0;$i<10000;$i++) { $arr[] = $i; } $arr2=[]; for($i=0;$i<10;$i++) { $arr2[$i] = $arr; } echo "now:".(memory_get_usage()>>8).”KB
“;
echo “peak:”.(memory_get_peak_usage()>>8).”KB”;
/*
結果
first:1553KB
now:3620KB
peak:3620KB
*/

元記事を表示

Docker × Laravel メールの送信処理をローカルで確認する

ウェブサーバー、アプリケーションサーバー、データベースサーバーが用意されていれば最低限Laravelを動作させることはできますが、実際に開発を進めてくるとメールを送信する処理を書くことが多くあります。

ローカルでのメール確認のためにメールサーバーを用意して、たくさんのメールアカウントを作って、メールを送信して、各メールアカウントでログインして確認…するのはとても非効率です。

そこでメール送信テストツールのMailHogというツールが公式のDockerイメージが提供されています。
こちらを利用すると実際にメールを送信することなく、メール内容をWeb UIで確認できます。

## MailHog

開発者向けのメールテストツール

– https://github.com/mailhog/MailHog
– https://hub.docker.com/r/mailhog/mailhog

## 前提

[最強のLaravel開発環境をDockerを使って構築する【新編集版】](https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f

元記事を表示

PHPパフォーマンスチューニング

夏休み記事2件目です。

PHPのパフォーマンスチューニングする場合、どの部分がボトルネックになっているか把握しないといけません。
今回は、Xdebugとwebgrindを使ったプロファイリングをやってみたのでまとめます。
なお、本記事の画像は、プログラムの情報が漏れないようぼかしています。

# とりあえずどのように見えるのか紹介
Xdebugでphpのプロファイリングをしてそのアウトプットをwebgrindで表示すると以下のような感じになります。
![スクリーンショット 2020-08-10 13.31.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323051/a0afa85a-109a-5357-b47d-12a7932c5b37.png)

– 実行された関数名
– 呼び出し回数
– その関数自身の全体に対する処理時間の割合(%)、または実行時間(msec / usec)
– 実行するのにかかった総時間

が表示されます。
処理の流れをわかりやすくグラフで表示することもできます。
![ス

元記事を表示

PHPのOOPについて自習したことをまとめてみる②(クラス定数について)

・宣言した定数は変更できません。

“`php:const1.php

“`
・クラス定数の使い方には、クラスの外部からアクセスする場合と、クラスの内部からアクセスする場合があります。

・クラス名、スコープ解決演算子(::)、定数名の順に使用することで、クラスの外部から定数にアクセスできます。

“`php:const2.php
byebye();
?

元記事を表示

Factory MethodパターンのメリットとPHP実装例

## Factory Method パターンとは

Factory Methodパターンは、インスタンスの生成をサブクラスにまかせることで、呼び出し元を生成されるインスタンスの具体的なクラスから解放することを目的としたデザインパターンです。文章ではよくわからなかったので、具体例を挙げます。

通常は次のようにインスタンスを生成します。

“`php
$product = new Product();
“`

これをインスタンス生成を担うメソッドに置き換えるのがFactoryMethodパターンです。

“`php
public function factoryMethod() : Product
{
return new Product();
}
“`

クラス図で表現すると次のようになります。

![スクリーンショット 2020-08-10 11.26.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500854/076fae27-e573-9bd7-ef52-183677d9c404

元記事を表示

PHPのOOPについて自習したことをまとめてみる③(継承について)

“`php:extends1.php
name = $name;
$this->color = $color;
}
public function intro() {
echo “The fruit is {$this->name} and the color is {$this->color}.”;
}
}

// Strawberry is inherited from Fruit
class Strawberry extends Fruit {
public function message() {
echo “Am I a fruit or a berry? “;
}
}
$strawberry = new Strawberry(“Strawberry”, “red”);
$strawberry->message(

元記事を表示

PHPのOOPについて自習したことをまとめてみる③(アクセス修飾子について)

###public, protected, privateについて
・public-プロパティまたはメソッドはどこからでもアクセスできます。これがデフォルトです
・protected -プロパティまたはメソッドは、クラス内およびそのクラスから派生したクラスによってアクセスできます
・private -プロパティまたはメソッドはクラス内でのみアクセスできます

・アクセス修飾子は、プロパティとメソッドにつけることができる。

<プロパティにつけた場合>

“`php:accessproperty.php
name = ‘Mango’; // OK
$mango->color = ‘Yellow’; // ERROR
$mango->weight = ‘300’; // ERROR
?>
“`
<メソッドにつけた場合>

“`php:accessmethod.php

元記事を表示

PHPのOOPについて自習したことをまとめてみる②(__construct, __destruct について)

###__construct関数の使い方
“`php:construct.php
name = $name;
$this->color = $color;
}
function get_name() {
return $this->name;
}
function get_color() {
return $this->color;
}
}

$apple = new Fruit(“Apple”, “red”);
echo $apple->get_name();
echo “
“;
echo $apple->get_color();
?>
“`
・set_〇〇関数が必要なくなるので、コード量が減る。

###__destruct関数の使い方
“`php:destruct.php

元記事を表示

PHPのOOPについて自習したことをまとめてみる①(クラスの定義について)

###参考にしたサイト
https://www.w3schools.com/php/php_oop_what_is.asp

###クラスの定義
“`php:makeClass.php
name = $name;
}
function get_name() {
return $this->name;
}
}
?>
“`
・クラスとは→プロパティ(変数)やメソッド(関数)を集めたまとまりのこと。
###クラスの定義2
“`php:makeClass.php
name = $na

元記事を表示

$thisとは

#$thisとは
PHPでスコープ外で定義された変数を利用するための擬似変数
#thisがある時とない時の違い
“`
class numbers{

public $number = ‘one’;

public function saynumber(){
$number = ‘two’;

echo $number;//出力結果はtwo
echo $this->number;//出力結果はone
}
}
“`

元記事を表示

Docker × Laravel Vueをインストールしてログイン機能まで実装する

DockerでLaravel環境を構築する記事を書きましたが、
Vue以外にもReactを選択したり、フロント側はそもそもリポジトリを分けて開発する場合もあり前回の記事では紹介しきれていませんでした。

今回はLaravel環境を構築したあと、Vueのインストールまで試してみます。

## Laravel UI とは

Laravelバージョン `5.8` までは、`php artisan make:auth` というコマンドが用意されていましたが、 `Laravel 6.0` 以降は Laravel UI パッケージに切り離されました。

– https://github.com/laravel/ui
– https://readouble.com/laravel/7.x/ja/frontend.html
– Laravel7はlaravel/uiは2.x系
– https://readouble.com/laravel/6.x/ja/frontend.html
– Laravel6はlaravel/uiは1.x系

## 前提

[最強のLaravel開発環境をDocker

元記事を表示

シンプルなRESTFull API を PHPでちゃちゃっと作りたい場合

## how to use
### composer の インストール

“`bash
$ docker pull composer
$ alias composer=’docker run –rm -it -v $PWD:/app composer’
“`

### slim4-api-skeleton のインストールと設定
“`bash
$ composer create-project maurobonfietti/slim4-api-skeleton [my-api-name]
$ cd [my-api-name]
$ composer install
“`

### 立ち上げと確認
“`bash
$ docker-compose up -d –build
$ curl http://localhost:8081/

{“api”:”slim4-api-skeleton”,”version”:”0.22.0″,”timestamp”:1596992058}
“`

### src/Controller/Home.php
“`php

元記事を表示

【PHP】遅延静的束縛 static/self/parent

#はじめに
PHP資格勉強中の備忘録として記事を書きます。
内容は「PHP5技術者認定上級試験問題集」に出てきたものをまとめています。

`static` `self` `parent`が示すスコープで、どのクラスのメソッドが
呼び出されるのか本当にややこしかったのでまとめます。

#まとめ
| |スコープ |
|———|:——————————|
|self |selfが記載されたクラス |
|static |非転送コールのクラス |
|parent |parentが記載されたクラスの親クラス|

– 転送コール
– self、static、parentによる静的メソッドのコール
– 非転送コール
– 明示的にクラス名を指定したもの(クラス名::メソッド名)

#self
`self`は**「selfが記載されたクラス」**がスコープとなる。
よって以下の実行結果は**「foo」**となる。

“`php

元記事を表示

OTHERカテゴリの最新記事