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

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

PHPでのオブジェクト型データへのアクセス

型の種類で`object`というものがあります。配列のような使い方をするようですが、その要素へのアクセスの仕方です。

“`example.php
$a = $object->[‘property’];
“`
変数`$a`に`$object`の`property`プロパティの値を格納するという意味になります。

元記事を表示

配列に大きい添字を指定して値を代入したときのサイズ

## 動機
 Webアプリを開発する際、ユーザーID(整数)をインデックスにした配列を作ったときに、無駄に大きい配列になるのでは??

## 結論
 PHPでは配列、JavaScriptでは`Map`を使用すると、サイズが無駄に大きくならない。

### PHPの場合
 大きい添字を指定しても、問題はなさそう。

“`php
$array = [];
$array[100] = ‘hoge’;

echo count($array); // 1
“`

### JavaScriptの場合
 大きい添字を指定すると、あいているところに`empty`が挿入された配列になった。

“`javascript
let array = [];
array[100] = ‘hoge’;

console.log(array); // [empty x 100, “hoge”]
console.log(array.length); // 101
“`
`Map`を使用すると、PHPの配列と似たような振る舞いになった。

“`javascript
let map =

元記事を表示

お手元のPHPファイルをphp-cs-fixerでチェックする

## コマンド

“`shell-session
# 自動整形しない(差分表示のみ)
$ docker run -v $(pwd):/project herloct/php-cs-fixer fix –dry-run -v –diff –diff-format udiff .

# 自動整形する
$ docker run -v $(pwd):/project herloct/php-cs-fixer fix -v –diff –diff-format udiff .
“`

## 参考

– [Laravel PHP-CS-Fixer のルール設定](https://qiita.com/ucan-lab/items/7d4180462347a42009d5)
– [https://hub.docker.com/r/herloct/php-cs-fixer](https://hub.docker.com/r/herloct/php-cs-fixer)

元記事を表示

Laravel6 ユーザと管理者の認証を分けて管理者の認証情報のみ名前とパスワードだけにする

# 目的

– ユーザと管理者とで認証を分ける方法をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| PC | 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.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 6.18.35 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaeecae69d63

元記事を表示

Humhubのカスタムモジュールの作り方(公式ページのとある解釈)(2)

#はじめに
 前回は、Humhubのカスタムモジュールの作り方について、モジュールの型枠といえるような部分について、公式ページについてのいち解釈を記述した。今回は、カスタムモジュールのeventsの記述についての解釈を、おじさんは語りたい。(おじさんは、「亜人ちゃんは語りたい」というアニメを見たりすると、そのオマージュとしてこんな言葉遣いをしてみたくなるのだ)。

 カスタムモジュールの利用にあたって、「このモジュールは、この操作のときにこんな風にでてきてほしい」という状態条件があることだろう。この状態条件、モジュール活性化の条件を記載することがeventsの記述であると言ったら、伝わるだろうか?コールバックのトリガーを書く、という表現があうだろうか?

今回の解釈ターゲットは、こちらの公式ページだ。
https://docs.humhub.org/docs/develop/modules-event-handler/

 前回内容と重複する部分もあるが、eventsの記述について公式ページの説明をなぞりつつ、後半、具体的にcustom_pageモジュールのメニュー表示の仕組みについて

元記事を表示

CakePHPのAuthComponentを使ってパスワードを使わず任意のデータでログインさせる方法

## 前書き
パスワードを使わずにAuthComponentを使ったログインを実装したのでそのメモ書き
1つのテーブルだけじゃなくて複数のテーブルのデータからログインできる様に実装しています。

イメージとして
荷物の再配達のサイトとして
電話番号と再配達番号の二つで再配達依頼ができる様にするイメージです。

## 開発環境
PHP 3.6
CakePHP 3.8

>※注意点
>AuthComponent は CakePHP4.0.0以降では非推奨になり、authorizationとauthenticationプラグインに置き換えられます。
> 引用元:CakePHP公式(AuthComponent)

## 最初に行き着く答え

“`AppController.php
class AppController extends Controller
{

public function initiali

元記事を表示

PHP 製システム・設計思想面の,システムアーキテクト的な,ふわっとした話。模範解答はない領域だと思うけど,ベタープラクティスを披露してみる

# 概要

この五年間ほど,オープン系システムの開発に携わり,PHP を使う機会がありました。

自分でコードをゴリゴリ書くことは少ない(社外のビジネスパートナーさんへ発注)のですが,他者に書かれたコードを眺めるうちに,おぼろげながら,**PHP 製システムの「レベル」感って,こんなものかなぁ**という,個人的な線引きができつつあります。

また,入れ替わりの激しいフレームワーク情勢を見物していて,**「ブレてはならないフレームワーク活用指針」**についても,自分なりのアイデアが煮詰まってきたので,発展途上かも知れないけれど,そろそろ記事としてシェアしてみようと思いました。

技術面うんぬんよりは,**システムアーキテクト的な視点で,PHP 製システム・設計思想面のトピック**に近いかも知れないです。

ゆるっ&ふわっとした,とりとめのないトピックを,一つの記事にするという,巧みさが求められる作文になりそうです(冷や汗)。

# PHP 製システムの「レベル」感

昔ながらの,ザ・レガシー なPHP から,今風イケイケ PHP まで。

以下のテーブルで,すべてのパターンを網羅している

元記事を表示

【PHP】foreach、三項演算子

PHPについて学習内容を備忘録としてまとめます。

#foreach
配列専門のループ処理。
配列の要素が入っている分だけ繰り返し処理を行います。

例えば、実行例としては下記のようになります。

“`php

“;
}
?>

#実行結果
test1
test2
test3
“`
このように3つの要素を繰り返し処理しました。

##連想配列
連想配列でも同様の処理をすることが可能であり、
下記のように動作します。

“`php

“test01” ,”test2” => “test02”,” test3” => “test03”);
foreach($test as $key => $value){
print $value . ”は” . $key . “です
”;
}
?>

#実行結果
test1はtest01です
test2はte

元記事を表示

[タスク②の解説記事]未経験からエンジニアがキャリア初期に、任されるあろう3つのタスクを出題してみる

## 前回の記事の解説

出題したタスクはこちら

https://qiita.com/morry_48/items/7dea1145d2db8bb7f570

## タスク②画面上に表示文言を追加する
〜DBに保存されたデータを取得し、画面上に表示しよう〜

タスクの見通しとしては、
1.表示箇所の特定
2.表示するデータがデータベースから取得されているか確かめる(ない場合は取得する)
3.上記のデータを対象箇所に表示する
といった手順になる。

タスク①の要領でまずは表示すべき箇所を見つけることから始める。
①で使用したlist.twigを少しスクロールするとカートに入れるボタンの箇所があるのでそのすぐ上が表示箇所となる。

次にlist.twigの商品情報を表示している箇所を見るとProduct.hogehogeのようにして表示していることがわかる。(nameを表示している箇所はProduct.name)
Productの定義箇所を見ると145行目あたりに
{% for Product in pagination %}
とあることからpaginagionという変数(配列)を展開

元記事を表示

formボタンの使い方(PHP超初心者)

##はじめに
PHP超初心者の私が、formボタンの作成につまづき、そこから学んだことを投稿させていただきます。
##formタグとは
入力フォームなどを作成するときに使用するタグ。

##アクションとメソッドを設定する。

◉action属性 = フォームで入力したデータを処理するプログラムを指定できる。
※urlを記載すればボタンを押した時にそのページへ遷移することができる。決まっていない場合は「#」記号を設定する。

◉method属性 = フォームで入力したデータをどのように送信するかを設定できる。
値は、”get”か”post”から選択する。
※method属性を省略すると初期値として”get”が入るが、通常は”post”使用する。

###GETとPOSTの違い
・GETは情報の検索や取得処理を行う場合に使う。
・POSTは更新や、登録処理を行う場合に使う。
・機密性の高いデータの送信ならPOSTを使う。

こちらの記事がとても分かりやすかったです。
https://qiita.com/kanataxa/items/522efb74421255f0e0a1

##私がして

元記事を表示

Laravelでmockeryを使ったユニットテスト

# この記事を読んでできること
LaravelでMockeryを使用したUnitTestができるようになる。
※結構前に作ったものなので、ご指摘あれば気軽にくださいmm

## そもそもMockeryって何?
PHPUnitでモックを作りやすくしてくれるPHPモックオブジェクトフレームワークのこと。
https://readouble.com/mockery/1.0/ja/index.html

# 環境
laravel 5.3
phpunit 5.7.3
mockeryを使用

# やりたいこと
– Test::getInfo()という未実装のstaticメソッドをMock化してphpunitテストしたい
– post送信でlaravelのバリデーションを通して確認も同時に行いたい

下記コードのstore(IdRequest $request)の部分でlaravel既存のバリデーションを行なっている。
ここのテストをするために$this->call()を使用したPOST送信を行っている。
その一連の処理の一部に当たるTest::getInfo()が外部接続で未実装というシチュエーシ

元記事を表示

PHPにおける演算子をまとめる

#プログラミング勉強日記
2020年9月5日
演算子はもう大体知っていると思っていたけど、`<>`や`.=`といった知らない演算子もあったので、この機会にすべてまとめてみようと思う。

#算術演算子
 加減乗除といった簡単な足し算や引き算、掛け算、割り算を行う演算子。足し算は数値だけではなく、文字列を連結するときにも使われる。
 足し算は`add`、引き算は`sub`、掛け算は`mul`、割り算の商は`div`、割り算の余りは`mod`で示す。

| 演算子 | 意味 | 説明 |
|:–:|:–:|:–:|
| `+` | 加算 | 2つ以上の値の足し算をする |
| `-` | 減算 | 2つ以上の値の引き算をする |
| `*` | 乗算 | 2つ以上の値の掛け算をする |
| `/` | 除算 | 2つ以上の値の割り算をする |
| `%` | 剰余 | 割り算したときのあまりの数を求める |

“`php:例
\n”;

$sub = 17 – 5;
echo “1

元記事を表示

【Laravel】多言語切り替え機能の実装

備忘録、第四弾。

前回書いた[「【Vue.js】vue-i18nを使って多言語化」](https://qiita.com/shin_moto/items/505ae84e9a37601e05ee)の続き。
Laravelで切り替え機能を実装してみた。

参考:
https://mydnic.be/post/laravel-5-and-his-fcking-non-persistent-app-setlocale

## 実装

まずは使用する言語を配列で用意します。

“`php:config/languages.php
‘日本語’,
‘en’ => ‘English’,
‘cn’ => ‘簡体字’,
‘tw’ => ‘繁体字’,
];

?>
“`

次に言語切り替え処理を書くコントローラーを用意します。

“`
$ php artisan make:controller LanguageController
“`

“`php:LanguageController.php
class Lan

元記事を表示

PHPの比較演算子

##はじめに
判定には比較演算子がよく使われると思います。
下記簡単にまとめます。

##PHPの比較演算子

“`php
//型の相互変換をした後で $aが$bに等しい時にTRUE
$a == $b

//$aが$bに等しく、および同じ型である場合にTRUE
$a === $b

//型の相互変換をした後で$aが$bに等しくない場合にTRUE
$a != $b

//型の相互変換をした後で$aが$bに等しくない場合にTRUE
$a <> $b

//$aが$bと等しくないか、同じ型でない場合にTRUE
$a !== $b

//$aが$bより少ない時にTRUE
$a < $b //$aが$bより多い時にTRUE $a > $b

//$aが$bより少ないか等しい時にTRUE
$a <= $b //$aが$bより多いか等しい時にTRUE $a >= $b

//$aが$bより大きいか、0等しいか、小さい場合に、それぞれ、0より大きいか、0か、0より小さい integer。
//PHP 7 以降で使用可能
$a <=> $b
“`

引用:[PHP: 比較演算子 – Manu

元記事を表示

LaravelのMigrationファイルを既存のDBから自動生成する方法

## oscarafdev/migrations-generator
* https://github.com/oscarafdev/migrations-generator
* 検索してみると[barryvdh](https://github.com/barryvdh/laravel-migration-generator)や[Xethron](https://github.com/Xethron/migrations-generator)のものが出てくるが、どれもoscarafdevをお勧めします、になっていっている様子。

### 導入
* composer実行

“`
composer require “oscarafdev/migrations-generator” –dev
“`

### 使い方

* 全テーブルのmigration定義を作成する。

“`
APP_ENV=development php artisan migrate:generate
“`

* テーブルを指定して作成する。

“`
APP_ENV=developmen

元記事を表示

ajaxで論理値をポストしたい

ajaxを使って非同期でデータをポストするさい、その値を論理値(TRUE/FALSE)としてポストしたいというとき。
普通に書いても`string`型として扱われてしまう。
ポストするときにわざわざ`boolean(true)`などと書いても論理値としてはポストしてくれない。
なので、どこかで一度データを成型しないといけない。
今回はFuelPHPでの場合を記述する。

“`view/example.php