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

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

php のちょっと難しい単語まとめ

## 参照渡しについて
・参照渡しは、変数で値を渡す際にコンピュータに変数の住所を渡す(メモリの領域の住所を渡す)。
・参照渡しされたものはどこかで値が変更された場合、元の変数の値も変化する。
・通常の参照渡しを行わない場合、関数内でreturnを行うが参照渡しの場合は必要なくなる。

## コンストラクタ
・クラスのインスタンス生成時に実行されるメソッド。
・主にそのクラスのメンバ変数を初期化するときに使用

## アロー関数 ->
・左辺にクラスのインスタンスを取る、右辺には左辺のクラスがもつプロパティやメソッドを指定し、
プロパティへのアクセス・メソッドの呼び出しを実行する。

## 静的変数
・関数内に保存されるローカル変数
・通常、関数内のローカル変数は、関数の呼び出しが終了すると破棄される。
そのため、呼び出すたびに値を増やしたい場合は対応できない。
その場合、変数名に「static」キーワードを付けると、その変数は呼び出しが終了しても保存されるようになる。
言い換える

元記事を表示

メモリまわりのメモ

### 概要
PHPは、php.iniの中で設定されている。
基本的に一連の処理を抜けると自動的に開放される。
「memory_get_usage」は現在のメモリ使用量を出力。PHP スクリプトに割り当てられたメモリの量をバイト単位で返します。
「memory_get_peak_usage」は最大メモリ使用量を出力。メモリの最大値をバイト数で返します。

### PHPプログラムのメモリの使用量を確認する
$mem = memory_get_usage();
$mem = number_format($mem);
print(“Memory:{$mem}”);

### PHP.iniの設定
memory_limit = 256M

phpに直接書く

元記事を表示

Laravel の seeder がカオスになってきたのでフォルダ分けした

システムの継続開発が進むにつれ、システムに必要なデータもどんどん増えていく。
そして気づけば migration のフォルダも seeder のフォルダもファイルだらけで何が何やら・・・。ということに。
migration は時系列で並ぶのでまだマシだが、seeder は デフォルトで UserSeeder みたいな命名のファイルがあるので、それに釣られてしまった結果、どの seeder がどのときに追加したやつだっけ?みたいになりがち。

なので seeders フォルダの下にサブフォルダを切って、機能別に整理しようと思い立った。
単にフォルダを切っただけど「特定の seeder だけ実行したい」と言う場合や「Controller や Service クラスなどから実行できない」事態になる。

やることは以下の4つ。
1. seeder を任意にディレクトリ分けする
2. composer.json に記述を追加する (Laravel5 などの場合)
3. ディレクトリ分けした seeder に namespace の記述を追加する
4. seed コマンド実行時に namespac

元記事を表示

AWS EC2で、index.phpが表示されない?

[AWS EC2上にPHPサイトを立ち上げて、独自ドメインでアクセスできるようにするまでの全手順](https://qiita.com/harufuji/items/4fcd8f991fab5ad3354a#ssh%E3%81%A7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B)
[AWSに登録してwebサーバーを立ち上げてみる](https://qiita.com/Hikery/items/b919ae9e35f0f66e6a95)

これらの方々の情報共有で最後のところまでいけたんですが(ありがたい..?)
なぜか、この最後の部分で引っかかってたんですが、sudo追加でいけました。

“`terminal
systemctl restart httpd.service
“`

“`terminal
sudo systemctl restart httpd.service
“`

元記事を表示

Synfony2 メソッド,フォーム,アノテーション チートシート

個人的なメモであります

#コントローラーメソッド
| メソッド名 | 説明 |
| ———————————- | —————————————————————————————— |
| generateUrl() | ルート名からURLを生成 |
| forward( ) | 指定した名前のコントローラーへ処理を引き渡しその結果を取得 |
| redire

元記事を表示

Laravel のwhereHasをwhereInに置き換える

## 追記
下記の方が、便利なライブラリを作成してくれています。
古のphpバージョンだと対応していない(未確認)ので、以降の記事は備忘録的な意味で残します。
https://qiita.com/mpyw/items/0761a5e44836c9bebcd5

# 難しいクエリを作りたくない
whereHasは遅い。激遅い。
left joinや、whereInすれば良いらしいと推測。
でもleft joinはコーディングがしんどいのよな……。

## 結論:whereInで頑張れば簡単だし改善はできるよ

### modelの関係性
usersはcommentsと「1対多」の関係。

### whereHasを用いた場合
#### 前提
* リレーション先のカラムでwhereしたい。
* 姓と名が別々のカラムになっており、concatでlikeしないとならない。(この条件は今回関係ない)

“`php5:UsersController.php
Comments::whereHas(‘Users’, function($query) use ($user_name){
$query

元記事を表示

【初心者】PHPの論理演算子について

#論理演算子とは?
論理演算子と言われてもピンとこないかもしれない。
ただ、それが何か言われると知っているし、使っていると思う。
`AND`や`OR`のこと。
例があると非常に分かりやすいが、これらが論理演算子ということを覚えておきたい。
###実際に使ってみる
“`php
//ANDを使する
$n = 40;
if($n >= 30 && $n <= 50) { echo($n)."は30以上かつ50以下です"; }else { echo($n)."は30以上かつ50以下ではありません"; } //出力結果 40は30以上かつ50以下です //ORを使用する $n = 40; if($n % 2 == 1 || $n >= 30) {
echo($n).”は30以上もしくは奇数の数値です”;
}else {
echo($n).”は30より小さい偶数です”;
}
//出力結果
40は30以上もしくは奇数の数値です
“`
`AND`は`&&`、`OR`は`||`と記述することが一般的?なのだろうか。

“`php
$n = 20;
if($n >= 30 AND

元記事を表示

EC-CUBE4 プラグインでマスターテーブルを追加する

#はじめに
初めての投稿となります。
よろしくお願いします。

仕事で始めてEC-CUBE4を利用したECサイトを仕事で制作しました。
その際、プラグインでマスターテーブルを新規追加することになったのですが、
テーブルの新規追加はよく見かけるのに対し、マスターテーブルの記事が少ないように感じたので作成方法を簡単に記事にまとめよう思います。

新規プラグイン作成方法については多くのサイトが存在するのでそちらを参考にしください。

#目標
マスターテーブル(mtb_sample)の新規追加。
管理画面>設定>システム設定>マスタデータ管理 へ登録。

#最終的なマスターテーブル
形は以下のしたいと考えています。

| id | name | sort_no | discriminator_type |
|:—|:————–:|:——-:|:—————————:|
| 1 | テスト1 | 1 | samplemtbconfig|
| 2 | テスト2

元記事を表示

GCP Cloud Vision APIでドラゴンボール表紙をOCRにかけてみた

## Cloud Vision API の 光学式文字認識(OCR)

Google Cloud Platform (GCP) > Cloud Vision API ではいろいろなものを検出できます。

先日 `光学式文字認識(OCR)` を利用してみて、精度の高さに驚きました。

そして、画像化した書籍は読めても、ではマンガはいけるのか、が気になっため、やってみました。

Cloud Vision API
https://cloud.google.com/vision

には 大きく、

– AutoML Vision
– Vision API

があり、

`AutoML Vision` はカスタムオブジェクトの検出などより高度なことができ、

`Vision API` は顔検出、ロゴ検出など、汎用的なオブジェクトの検出が手軽に利用できます。

今回は `Vision API` の `光学式文字認識(OCR)` を利用しました。

## 解析した画像

ドラゴンボールコミックなどの表紙を解析しました。

左 = 元画像と解析結果を重ねたもの
右 =

元記事を表示

WordPressでOGPの自動出力をしてみた

# はじめに
最近流行りのJamstack、いいですよね。
弊社でもGatsby.jsを使ったJamstackの実績があります。(※担当エンジニアは私じゃないです)
[“TINDER” CORPORATE WEB SITE & MOVIE|WORKS|PLUS-D Inc.](https://plus-d.co.jp/works/tinder.html)

Gatsby.jsを調べているうちに、Gatsby.jsでOGPの自動出力をしたという記事を拝見しました。
[GatsbyJSでOGP画像の動的生成にチャレンジしてみた | Learn Something New](https://blog.kentarom.com/create-gatsbyjs-plugin-to-dynamically-generate-og-images/)

で、OGP自動出力したすぎる、と。目的がGatsby.jsからOPG自動出力に変わりまして。
じゃあ、個人でやってるブログで試したろ!と思ったのですが、私のブログ、ヘッドレスCMS化?SSR?なにそれ?みたいなWordpressを使ったフツーの

元記事を表示

Laravel すべてのviewで共通する変数の設定

## はじめに
Laravelを勉強中です。備忘録として残しておきます。

## 手順
#### サービスプロバイダーの作成
“`app/Provider/ComposerServiceProvider.php

with(‘user'(使いたい変数名), Auth::user()(使いたいデータ));
});
}
}
“`
View::composerの第一引数

元記事を表示

[仕事納め]2020年にやらかしたミスをまとめる[未経験から2年目]

こんにちは。web系を中心としたプラグラマをしております。
小さなミスからそこそこ大きめのミスまで、今年1年でたくさんのミスをしてきました。
まだ新人で大きな権限を頂いていないこともあり、[本番環境でやらかしてしまった](https://qiita.com/advent-calendar/2020/yarakashi-production)皆様ほどのインパクトあるやらかしはないのですが、コーディングや開発環境構築などであれこれ反省点があるのでまとめていきたいと思います。
アンチパターンやあるあるとしてお楽しみ下さい。

・[コーディング系](#コーディング系)
・[環境系](#環境系)
・[人として](#人として)

#コーディング系
###誤字
とにかく多かったです。
クラス名や関数名ならすぐエラーが発生して見つけやすいのですが、phpで変数名のスペルミスをしたりすると、そのままnullが代入されたりして見つけづらく、時間の無駄になりがちでした。

“`php
$address = ‘hogehoge’;
print $adress; // 返却値なし
“`
くだらない誤字ですが

元記事を表示

PHP 月末の日にちを取得する

# 目的

– PHPで月末の日にちを取得する方法をメモ的にまとめる

# 前提情報

– 下記サービスを用いてWeb上でコードの動作を確認した。
– [https://paiza.io/ja](https://paiza.io/ja)
– 忘れそうなのでメモ的にまとめる。

# 詳細

1. ひと月前の月末の日にちを取得したい時は下記を実行する。(YYYY/MM/DDの形式で情報を取得する事ができる。)

“`php
$last_day_of_last_month = date(‘Y/m/d’, mktime(0, 0, 0, date(‘m’), 0, date(‘Y’)));
echo $last_day_of_last_month;
“`

1. 今月の月末の日にちを取得したい時は下記を実行する。(YYYY/MM/DDの形式で情報を取得する事ができる。)

“`php
$last_day_of_this_month = date(‘Y/m/d’, mktime(0, 0, 0, date(‘m’) + 1, 0, d

元記事を表示

php.iniの保存場所の確認・編集、PHPのエラーメッセージの表示方法

##なにが起こったのか
PHPの学習を開始したが、エラー文が表示されずに困っていた。
-> php.iniを編集すれば表示されることが分かった。
-> **どこにphp.iniがあるかが分からなかった。**
-> **php.iniが読み取り専用で編集できなかった**

##実施環境
**Oracle VM VirtualBox 6.1.16
-> Ubuntu 20.04
-> Apache 2.4.41
-> PHP 7.4.3**

##php.iniの保存場所の確認方法
今回は**「phpinfo」**で確認する。
->webでphpinfoを確認する

“`php:info.php

“`

###結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883543/7654fe39-ff8c-5c94-4c64-8689778ebae7.png)

保存場所は「Configuration File(php.ini) Path」に記載され

元記事を表示

laravelの始め方(Linux)

私自身使い始めるときになかなかうまくいかなかったのでこれから始める人がつまづきにくいようにまとめておきます。
# 1. composerのインストール
composerとはPHPのライブラリを管理するためのツールで、laravelはこれを使ってインストールします。

“`

php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
php composer-set

元記事を表示

【初心者】PHPで文字列を反転してみる

# 文字列を反転する
タイトル通り、文字列を反転する。
アルファベット・数字の場合で試してみる。
###アルファベットの場合
“`php
$n = “abcde”;
echo strrev($n);
// 以下出力結果
edcba
“`
###数字の場合
“`php
$n = “012345”;
echo strrev($n);
// 以下出力結果
543210
“`
このような結果となった。

因みに、平仮名とカタカナも試してみたが、文字化け?してしまったのかエラーだったのかわからないけれど、うまくいかなかった。
もう少ししっかり調べる必要があると思った。
しかしながら、この関数も頭の片隅に入れておいて損はないのかもしれない。

元記事を表示

【初心者】PHPで10進数を2進数に変える

# 10進数を2進数に変換したい
簡潔に。

“`php
decbin(10進数);
“`
実際に使ってみると…

“`php
$str = 18;
echo decbin($str);
// 出力結果
10010
“`
このような感じで、10進数”18″が”10010″と2進数に変えることができた。
## 逆に2進数を10進数には…
では逆はどうだろうか。

“`php
bindec(2進数);
“`
実際に使ってみると…

“`php
$str = 10010;
echo bindec($str);
// 以下結果
18
“`
このように2進数を10進数に変えることができた。

簡単に覚えておけそうなので、覚えておく。

元記事を表示

Laravel で ValueObject を最も簡単に導入する方法

## はじめに
`ValueObject`を導入する方法を探す必要なんてなくて、`app/ValueObjects`ディレクトリ作ればおしまいではあるのですが、`Laravel`らしく`php artisan make:value-object`コマンドでファイルを自動生成するところまでをパッケージにして公開しました。

ソースコードは[こちら](https://github.com/imunew/laravel-value-objects) です。
`composer require imunew/laravel-value-objects` で導入できます。

## こんな`ValueObject`がいい
`ValueObject`に求めるものは、以下のとおりです。

– `immutable`
– 必要なデータは`__construct`でのみセットして
– `setter`は`public`にしない
– `@property-read`なプロパティにアクセス可能
– `Eloquent Model`みたいに
– `getter`をいちいち書かなくていい

元記事を表示

Laravelの初期画面を表示させるまでのエラー解決

# はじめに
Homestead環境でLaravelのプロジェクトを作成しました。

# 手順

コマンドで以下を実行すると

“`
composer create-project 〜
“`

下記のエラー

“`
Your requirements could not be resolved to an installable set of packages.

Problem 1
– phpunit/phpunit[6.0.0, …, 6.5.14] require php ^7.0 -> your php version (8.0.0) does not satisfy that requirement.
– Root composer.json requires phpunit/phpunit ~6.0 -> satisfiable by phpunit/phpunit[6.0.0, …, 6.5.14].
“`

phpのバージョンを7.0に変更

##### コマンド

“`
php70
“`

ブラウザで

“`
failed t

元記事を表示

【初心者】PHPで文字列の文字の入れ替えについて

## str_replaceはどうだろう?
以前、「文字列の中の特定の文字を削除したい」という記事を書いた。
https://qiita.com/wakiyo1017/items/ace7ddc7b364edc7ccff
その時知ったのは、特定の文字を特定の文字に入れ替えるということ。
つまり、本当は1文字だけ入れ替えたくても、他の同じ文字まで入れ替わってしまった。
この関数が使えないという訳ではないし、この関数を使用してできることの幅が広がった。
でも、今回は指定した場所の文字だけを変えたい。

## substr_replace関数を使う。
“`php
substr_replace(“文字列”, “入れ替え後の文字”, “入れ替え前の文字が何文字目か”, “何文字目まで入れ替えたいか”)
“`
ううむ。日本語で書くとわかるようなわからないような、不思議な感じになってしまった。

“`php
$str = “abcdefg”;
$replace = substr_replace($str, “&”, 3, 2);
echo($replace);
// 以下出力結果です。
abc

元記事を表示

OTHERカテゴリの最新記事