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

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

初心者用PHP正規表現(preg_replace)

正規表現てむずいなと感じたので、忘れないうちにメモとして残します。

今回はPHPの正規表現の“preg_replace“を使っていきます。

文字通り指定した文字を書き換えるものです。

百聞は一見に如かずなので、以下を例に自分の用途に合わせて行ってください。

“`
https://firebasestorage.googleapis.com/v0/b/project-auth.appspot.com/o/images/kLF0eEW2D2QfQEfO95wnpQahODl2/image.jpg?alt=media&token=5d91bc75-e63d-4594-bf5d-265336ef925e
“`

このようなURLの“images/“を“images%2F“に変換します。

“`regex.php
$valid_url=https://firebasestorage.googleapis.com/v0/b/project-auth.appspot.com/o/images/kLF0eEW2D2QfQEfO95wnpQahODl2/image.jpg?a

元記事を表示

PHP 簡易掲示板作成 データ保存編 #1

#目標
・「名前」と「コメント」の入力フォームから値を送信

・テキストファイルに「1投稿につき1行」で保存
1. テキストファイルを指定する
2. 指定したテキストファイルを開く
3. テキストファイルに書き込む
4. テキストファイルを閉じる

・保存フォーマット
投稿番号<>名前<>コメント<>投稿日時
`$num.”<>“.$name.”<>“.$str.”<>“.$date;`
1. 「名前」と「コメント」を受け取る
2. 受け取った値を変数に代入
3. 日時を取得する
4. 投稿番号を取得する
5. 1~4を組み合わせて投稿を作成

“`:sample.txt
1<>yuya<>完成<>2021/2/8 10:13:16
2<>yuya<>完成<>2021/2/8 10:13:22
3<>yuya<>完成<>2021/2/8 10:13:25
“`
#「名前」と「コメント」の入力フォームから値を送信
入力フォームを作成

“`html:HTML



【AWS】実務でEC2にLAMP環境を構築した流れをザックリかつわかりやすくまとめた

## はじめに
最近、実務でAWS(EC2)にCakePHP用の開発環境を構築するタスクを担当したので、その時に行ったざっくりした作業の流れをまとめておきます。

※著者の業務での構築手順・仕様なのでこれがデファクトスタンダード・ベストプラクティスではないと思います。
※あくまで一例として読んでいただければ嬉しいです
※新規開発ではなく現行環境のリプレイスです

## 構築する環境

||種類|バージョン等|
|:–:|:–:|:–:|
|OS|Linux|Amazon Linux 2|
|Webサーバー|Apache|2.4.46|
|DBサーバー|MariaDB|10.2.10|
|アプリケーション|PHP|5.4.16|

※あとはmemcachedも

## AWS(EC2)で環境構築するざっくりした流れ
### VPCを作成
VPCはAWS上で仮想化されたネットワークのこと。
このネットワークを介してEC2やRDSなどをインターネットなどと通信する。
AWSで作業する際にまずVPCの作成から始める。

### サブネットを作成
サブネットはVPCを細かく区切ったネットワ

元記事を表示

【Laravel】外部blade.phpファイルの読み込み

#はじめに
知識を整理するための個人的な備忘録です。

今回は、`header.blade.php`ファイルを複数のページで使い回したいと思います。

#方法
###1.`resources/views`の中にフォルダを作成
フォルダ名は`shared`としましたが、任意のフォルダ名で問題ないです。

###2.`shared`フォルダの中に`header.blade.php`ファイルを作成
`header.blade.php`ファイルですが、読み込み先のファイルに``タグや``タグが既に記載されているので、これらを書く必要はありません。

###3.読み込む
`header.blade.php`を読み込みたいファイルの中に以下のコードを書きます。

“`php
@include(‘shared.header’)
“`

#参考
[【Laravel】外部PHPファイルの呼び出し方法【5分で完了】](https://seita-limitless.net/laravel-external-php-file/)

元記事を表示

PHP参照渡しとforeach

## 初めに

記事を読んでいただきありがとうございます。
一月に未経験で就職したヤマウチです。
ここでは僕が勉強の中で関心を抱いたことに関して、アウトプット感覚で記事を書います。
記事に関するフィードバック等いいただけると幸いでございます。

## 今回の記事について

さて、今回の記事についてですが、題名にもあります通り「PHP参照渡しとforeach」について私なりにまとめましたので共有させていただきます。
この記事を読み進める前に[PHP 参照渡しを試しに使ってみたよって話](https://qiita.com/MitsukiYamauchi/items/78a5eb6698c19a55f4c4)を読んでいただけますと幸いです。

## foreach構文
早速foreach構文に関する注意点をご紹介します。

“`php
$numbers = [1, 2, 3, 4];

foreach ($numbers as &$number) {
$number = “「{$number}」”;
}

echo ‘

';
var_dump($numbers);
e

元記事を表示

PHP バリデーション

##バリデーション
PHPでの実装の際にバリデーションをかけてログイン、ユーザー登録の制御をしたいと思ったことはないでしょうか?

今回は、ユーザー登録の際に自分が実装した方法を紹介します。

まずユーザー登録用のファイルsignup.phpとバリデーション用のファイルvalidate.phpを用意します。

```signup.php

元記事を表示

Laravelでお気に入り機能

## はじめに
サービスの概要としては、本のデータがあって、user機能があって、userは本にブックマーク(お気に入り機能)をつけることができるという感じです。

##実装
```php:Book.php
public function bookMarks(){
return $this->hasMany('App\BookMark');
}
```
```php:User.php
public function bookmarks(){
return $this->hasMany('App\BookMark');
}
```
```php:BookMark.php

public function book(){
return $this->belongsTo('App\Book');
}

public function user(){
return $this->belongsTo('App\User');
}
```
関連はこのような感じになってます!

```ph

元記事を表示

備忘録 PHP クラス インスタンス プロパティ

```php:index.php
name = 'FISH'; //プロパティに値をセット(プロパティ名に$は不要)//
echo $fish->name; //セットした値にアクセス($は不要)//
//結果: FISH
?>
```

元記事を表示

LaravelのHTTPクライアント(Illuminate\Support\Facades\Http)でcURLのCURLOPT_SSL_VERIFYPEERをfalseにしたい。

# はじめに
こんにちは。Laravelで日に日に新しいもの出てきて(見つけて)、追いつくのに必死の筆者です。

先日cURLで書かれているコードをLaravelに踏襲する機会がありました。

その際に、Laravelで`CURLOPT_SSL_VERIFYPEER`のオプションの付加方法について、うれしいことに既にメソッドとして切り出して用意されていたので、共有します。

# cURLの場合
```php
$url = 'https://example.com';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // ←ここ
$response = curl_exec($curl);
curl_close($curl);
```

# Laravelの場合
```php
$url = 'https://example.com';
$response = Http::withoutVe

元記事を表示

【PHP】parallelでマルチスレッドを試そう?

# はじめに
PHPは、プログラムを上から順に実行するシングルスレッドの言語です。
今回は、**『[parallel](https://www.php.net/parallel)という拡張モジュールを使うことで、PHPでマルチスレッドを扱える!』**そうなので、試したいと思います?

## parallelとは
- PHP拡張モジュール
- PHP 7.2以降で動作
- PHP ZTS版でのみ動作
- CLIからの実行のみ動作
- 導入が少々手間

※マルチスレッドと言えば[pthreads](https://www.php.net/manual/ja/intro.pthreads.php)が使われているそうですが、「この拡張機能はメンテナンスされておらず、終了していると考えられます。」と書かれています。PHP 7.4以降は、サポートしていないということみたい。。

# 準備
### 使用技術
- php
- Docker

### ディレクトリ構成

```bash
.
├── Dockerfile
└── src
└── index.php
```
``src``の中を

元記事を表示

Phalcon PHPを今は新規で使うべきでない理由

こんにちは。
今日は業務で3年ほどPhalconを使っている私が今後Phalconを使おうと思っている人に向けて、使うべきでない理由をだらだら書いたものです。

## 注意

この話の前提として、現在(v4)の話をしています。
v5(PHPコード版)が開発され始めているのもあり、v5が出たらこの状況は変わる可能性があります。

## 本家のバグ修正が遅い、メジャーバージョンアップによるバグが多い

正直これに尽きる気がします。
Phalconは2021/02/07現在、4.1.0が最新です。
4.1.0は比較的最近出ているのですが、正直いま安定しているのは3.4.5です。
4系に上がったときにPSRに寄せようとしたり、色々と努力がされているのですがその際にバグが結構生まれてしまってるなと感じます。
特にPhalconはPHP拡張であるのもあってide-stubsという公式のIDE向けのhelperの利用は必須です。しかしこのide-stubsもzephirのコードをparseして生成しているのもあって漏れが合ったり、そもそもzephir側の静的チェックが出来てなかったりします。(In

元記事を表示

[Laravel] Eloquent::when() を使う

### when()メソッドを使う

例えば下記のように、if文を使ってクエリを書くコードがある。

```sample.php
$query = User::query();

if(request('filter') == 'likes') {
$query->where('likes', '>' , request('likes_amount', 0));
}
```

上記コードを、when()methodを使って、より見やすく、”Laravel Way”で書く。
when()メソッドの第一引数がtrueの場合実行される。

```when_sample.php
$query = User::query();

$query->when($request('filter') == 'likes', function($q){
return $q->where('likes', '>', request('likes_amount', 0));
});

$users = $query->get();
```

###その他例
Query Builderでも使える

元記事を表示

Docker で LAMP + Laravel + Node.js の開発環境を作り、Xdebugを導入してブレークポイントを使えるようにする。

## 実現したいこと
- DockerでLaravelの開発環境を構築する
- Xdebugを導入して、デバッグ時にブレークポイントを使えるようにする

## 構築したい開発環境
- PHP 7.3
- Composer 2.0
- MariaDB 10.4
- Node.js 14.15.3

## 結論

### ディレクトリ構造

```
.
├── docker
│   └── web
│   ├── Dockerfile
│   ├── httpd-base.conf
│   ├── php-base.ini
│   └── php.ini
├── docker-compose.yml
└── Laravelプロジェクトのファイル、ディレクトリ

```

### docker-compose.yml
[参考にした記事](https://mossa.dev/post/laravel_docker_lamp/)

```docker-compose.yml
version : "3"
services:
web:
build: ./d

元記事を表示

laravel6 htmlメールとtextメール両方送信できるようにする

# 目的

- htmlメールとtextメールをどちらか一つ、または両方を送信する方法をまとめる

# 条件

- 下記のどちらかの記事の内容の実装が完了していることを確認する。筆者は「laravel6 ファイル添付できるメール送信機能を作成する」のあとに本記事で紹介している作業を実施した。
- [laravel6 メール送信機能を作成する](https://qiita.com/miriwo/items/aa6b4de7fc548f3b1f8c)
- [laravel6 ファイル添付できるメール送信機能を作成する]()

# 情報

- 筆者はMacに直接作成したlaravelのローカル開発環境で本記事に記載したソースの検証を行っている。
- 筆者の環境ではメールの受信確認はMailCatcherを用いて行う。
- メール送信相手のアドレスは「test@example」とする。
- メール送信者のアドレスは「app@example」とする。
- 特筆しない限り実行しているコマンドは前のコマンドと同じディレクトリで実行するものとする。
- 下記の記事で実装したメールをht

元記事を表示

DB設計ファーストでLaravel開発をする場合に、Modelクラスを自動生成する

Laravelの新規開発では、通常DBのテーブル作成には、Migrationファイルを使います。

**Laravel 7.x データベース:マイグレーション**
https://readouble.com/laravel/7.x/ja/migrations.html

では、既存のDBが存在しているプロジェクトの場合はどうするでしょうか?
この場合、Reliese Laravel というパッケージを使って、Modelクラスを自動生成することができます。

**Reliese Laravel**
https://github.com/reliese/laravel

#### Reliese Laravelのインストール
では早速、Composerでインストールしてみましょう。

```
composer require reliese/laravel --dev
```

#### Reliese Laravelの読み込みのためプロバイダー登録

``` app/Providers/AppServiceProvider.php

元記事を表示

LaravelでPHP8にバージョンアップしたらcallActionでエラー

Laravelのバージョンは8.9.0でPHPを7→8にバージョンアップしたときに出たエラーの解消方法をメモ。
以下のようなエラーが出ました。

```
Error
Unknown named parameter $kind
```

該当行は `vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54` で `Controller.php` の `callAction` メソッドで発生している模様。

```
/**
* Execute an action on the controller.
*
* @param string $method
* @param array $parameters
* @return \Symfony\Component\HttpFoundation\Response
*/
public function callAction($method, $parameters)
{
return call_user_func_array([$this, $m

元記事を表示

【Laravel】マイグレーション云々

知識を整理するための個人的な備忘録です。

#イントロダクション
マイグレーションとは、テーブル定義を管理する仕組みのこと。
アプリケーション開発にあたってテーブル定義はしばしば変更されるため、変遷するテーブル定義を管理する必要がある。

#コマンド
##マイグレーション生成
```
$ php artisan make:migration create_テーブル名_table
```
`table`オプションをつける事で既存のテーブルに列を追加できる。

```
$ php artisan make:migration add_追加するカラム名_to_追加するテーブル名_table --table=追加するテーブル名
```
###生成されるファイルについて

```php:新規作成の時
public function up() {
Schema::create(
//省略
);
}
```
```php:既存のテーブルを変更した時
public function up() {
Schema::table(
//省略
);
}
```
`up`には`p

元記事を表示

PHP 入力フォームでエラーメッセージを表示

#エラーメッセージ

今回はPHPでエラーメッセージを表示させる方法について解説します。

まず、入力フォームで空文字を許可したくない場合があるかと思います。
そんな時、バリデーションでエラーメッセージを出したいと考えるでしょう。

##手順として

今回は新規ユーザー登録をする際にバリデーションについて書いていきます。

![スクリーンショット 2021-02-06 22.52.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/6c994d52-261f-a412-0324-a2cc7ac1b272.png)

例えば、上記のようにニックネームがからの場合にエラー表示をさせたい。

以下のように記載することでバリデーションをかけられます。

```
?php
if(!empty($_POST)){
if($_POST['name']===''){
$error['name']='blank';
}
}

phpの型変換が難しくて混乱するので整理した(配列×boolean×if文)

もうずっとこれに翻弄されているので整理しようと思いました

PHPの自動的な型変換について
-
公式より
https://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting

>bool に明示的に変換を行うには、キャスト (bool) または (boolean) を使用します。しかし、演算子、関数、制御構造が bool 型の引数を必要とする場合には、値は自動的に変換されるため、 多くの場合はキャストは不要です。

基本的には明示的にわざわざキャストしたりしなくて良いということらしい。
キャストまではしないにしろ、if文とかで使うのに明示的に論理式などになっている方が好みなのに。
でも公式にこう書かれてしまうとやりづらい、、

困っていること
-
既存のコードで
・フレームワークの仕様により配列が無限に登場している
・配列がif文の条件に無限に使われており、PHPによる型変換の結果のbool値が使われるのではなく、isset()の結果のbool値が使われている
・isset()使

元記事を表示

WordPressのフロントページに最新投稿記事を表示させない!(Lightningテーマ)

WordPressの設定>表示設定からフロント(TOP)ページに表示するページを設定できるのはご存知かと思います。

今回はテーマLightningを使用しているサイトでフロントに投稿ページも、固定ページも表示させたくない!
ってことがありましたのでその方法を記事にします。

#そもそも表示設定とは
WordPress管理画面のサイドメニューから、設定の中にあります。
![E986D151-1455-4E15-B37B-158EC3FC197B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986728/19edc1c5-c8df-2320-b56a-2c7e7835ee5f.png)

「最新の投稿」と「固定ページ(投稿ページ)」を選択でき、どちらかチェックしなければなりません。

##Lightningでは不要だった
今回のサイトはブログサイトではないため、投稿ページをフロントに表示する必要がありませんでした。
フロント用に固定ページを作り、それを設定するのもありですが、、

**Lightning

元記事を表示

OTHERカテゴリの最新記事