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

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

Laravel で別のControllerのメソッドを呼び出す

呼び出したい側のControllerの頭に
`use App\Http\Controllers\HogeController;`

呼び出したいところに
`HogeController::hogemethod($a);`

と書けば呼び出せた。

元記事を表示

phpでLEFT関数とRIGHT関数

ExcelにあってphpにはないLEFT関数とRIGHT関数がほしかったので。

“`php:my_function.php
function left($str, $num, $encoding = “UTF-8”){
return mb_substr($str, 0, $num, $encoding);
}

function right($str, $num, $encoding = “UTF-8”){
return mb_substr($str, $num * (-1), $num, $encoding);
}

echo left(“あいうえお”, 3); // → あいう
echo right(“あいうえお”, 3); // → うえお
“`

元記事を表示

共同開発まとめ

初めに
—————————————
実務に近い経験を積みたい!と思い、共同開発のコミュニティに参加しECサイトを作成しました。
共同開発するにあたって苦労した点や、各機能実装の際に参考にした記事や教材について記事にまとめました。

アプリの概要
—————————————
ご当地の美味しいものをお取り寄せできるECサイト。
アプリURL https://www.tomtom-blog.net
※テストアカウント
メールアドレス test@co.jp パスワード123456789123でログインできます。
GitHub https://github.com/KawataTsutomu/yanbaru_ec_traning

**使用画面のイメージ**
![使用イメージ.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/983658/56b10107-0261-2975-c59f-d679393e0a

元記事を表示

PHPで配列の要素を部分一致で検索する方法 ( preg_grep )

# PHPで配列の要素を検索する方法
学べること
– preg_grepの使い方
– 変数を検索する場合の正規表現
## preg_grep

検索してマッチする配列の要素を返します。
– 使い方

“` php
$array = [‘hoge’,’huga’];
$result = preg_grep(‘/ho/’,$array);
var_dump($result);

//出力結果
// array(1) {
// [0] =>
// string(4) “hoge”
// }
“`

– 解説

preg_grepの第一引数には検索する文字列、第二引数には配列を入れます。
ここでは配列の要素で”ho”が含まれるものを検索しています。$resultには検索にマッチした要素が配列として入っています。

ちなみに、第一引数の検索する文字列を囲ってるスラッシュはデリミタ(区切り文字)と呼ばれ、スラッシュじゃなくてもかまいません。例えば`'{ho}’`でもOK.

## 検索文字列が変数の時

それでは、検索する文字列が変数だった場合はどうしましょう。
上記に従うと、

元記事を表示

PHP 基礎 Part1

#PHPとは

HTMLは決まった画像しか表示できませんが、
PHPは見る人や状況に応じてテキストを変えることができます。

PHPはHTMLに組み込んで使うことができます。
の中に命令を書いていきます。
文末にはセミコロンを使うようにして下さい。

出力する時はechoを使うようにしましょう。

##変数

変数はPHPでは$を使って書いていきます。

##文字列の連結

PHPでは文字列を連結する時は.を使います。

##変数展開

文字列の中に変数を入れる時は変数展開をしますが、
{変数}を使いましょう。

##配列

配列の時は$配列名 = array(値1,値2…)を使います。
配列の末に値を追加する時は$配列名[]= ‘値’を記述しましょう。

##foreach

foreachは()の最初に配列名を入れて、asの後に変数を入れる。
連想配列の時は(配列名 as キー変数 => 値変数)

##関数

関数はまとまった処理を行い、値を返すモノです。
組み込み関数と言って、予め関数が入っています。

いくつかの組み込み関数を紹介します。
echo str

元記事を表示

PHP8.1でarray_is_listが追加されたよ

# はじめに
こんにちは。
熱帯夜で全然寝むれず、寝不足だと暑さがより一層堪えますね…筆者です :sob:

さて、今回はPHP8.1で追加された関数`array_is_list`を紹介しようと思います。

# array_is_listとは
こちら↓

https://wiki.php.net/rfc/is_list

0から始まる連続した整数がkeyになっているかどうかを判定する関数です。

# 使用例

“`php
‘apple’, ‘orange’]); // true
array_is_list([0 => ‘apple’, 1 => ‘orange’]); // true

// 0から始まっていない

元記事を表示

Laravel のリリーススケジュールとサポート期限

ソース: Laravel公式 サポートポリシー(8.xリリースノート)

https://laravel.com/docs/8.x/releases#support-policy

## 現状(2021年7月時点)まとめ

LaravelにはLTS(Long Term Support:長期サポート)版があります。
現行のLTSは6.xで、**次のLTSは2022年1月25日リリース予定の9.x**になります。

**7.xはBug FixesもSecurity Fixesもサポート期限が終了している**ので
今利用すべきはLTSの6.xか、アップデートするなら8.xになります。
もし今利用しているのが7.xであれば8.xにアップグレードを行う必要があります。

現行ではLTSである6.xの方が後発の7.xよりサポート期限が長くなっています。
そのため頻繁にアップグレードできない場合はLTSからLTSへ上げていくのが定番ですが、
次回LTSの9.xより10.xの方がBug Fixes期限は長く、Security Fixes期限は同じになっています。
Laravelのアップグレード作業は1

元記事を表示

ec2のamazon linux2 にnginx+php-fpm+php7.4+phalcon4 セットアップ

#ログインしてrootで作業します

“`

timedatectl set-timezone Asia/Tokyo
timedatectl status
localectl set-locale LANG=ja_JP.UTF-8

yum update

amazon-linux-extras install php7.4

amazon-linux-extras install nginx1

“`

epelのインストール設定がいろいろ調べるとありますが、AmazonLinux2のamazon-linux-extras に存在したので、それをインストールして、有効にすればOKです。

“`
amazon-linux-extras install epel

yum-config-manager –enable epel

yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum install php-mbstring

yum install pcre-devel

curl

元記事を表示

Boost your Laravel models by Lara Query Kit

# Lara Query Kit

Lara Query Kit utilizes the Eloquent model. PHP Trait and Laravel local scope are used to implement this utilitiy

### PHP Traits

PHP only supports single inheritance: a child class can inherit only from one single parent.

So, what if a class needs to inherit multiple behaviors? OOP traits solve this problem.

Traits are used to declare methods that can be used in multiple classes. Traits can have methods and abstract methods that can be used in multiple classes, and the meth

元記事を表示

Laravel でのファイルダウンロードを実装してみた

##LaravelでPDFファイルのダウンロードを実装してみて、こんなに簡単に実装できるんだ、、、と驚いたので書いてみた

####仕様、もしくは前提
・OS : Windows
・PHP 7.4.16 (cli) (built: Mar 2 2021 14:06:15) ( ZTS Visual C++ 2017 x64 )
・Laravel Framework 6.20.24
・ある画面に表示される「PDF出力」ボタンをクリックすると、DBに登録されているPDFファイルのパスを取得し、ブラウザ経由でローカルにPDFファイルがダウンロードされる。

####1.PDFファイルのパス取得
“`php
$res = \DB->table(‘files’)
->where(‘id’, ‘=’, $id)
->get();
$pdfFilePath = $res->pdf_pile_path;
//C:\LavelDir\storage\app\public\pdfFiles\202107191038162092931173.pdf
$pdfFileName

元記事を表示

Laravel+Eclipseで開発するための準備&Google App Engineにデプロイする

# 概要
以前からLaravelに興味があり、Laravelを用いて何かWebアプリケーションを作ってみたいと思っていました。

そこで先日、準備としてLaravelをインストールしてEclipseで開発環境を作り、作成した新規LaravelプロジェクトをGoogle App Engineにデプロイしてみました。最初は色々つまずきましたが、何とか一通りできたので参考にさせていただいたサイトと手順をメモとして残します。

## 目的
– Laravelをインストールしてプロジェクトを作成する
– LaravelプロジェクトをEclipseにインポートして編集できるようにする
– 作成したLaravelプロジェクトをGoogle App EngineにデプロイしてWebアプリとして公開する

## 環境
macOS Catalina ver.10.15.7
PHP 7.3.11
Laravel Framework 8.50.0
Eclipse Platform Version: 2021-06 (4.20)

※おおよその手順は同じだと思いますが、Windowsの場合手順が一部異なる可能性

元記事を表示

httpdとphp-fpmが動かない

EC2でwordpress環境を、codeDeployで自動デプロイ時に「systemctl start httpd.service」
「systemctl start php-fpm.service」を実行するのだが、1度目は動いて、二度目は動かない

#httpd原因

“`
#ログをコマンドで確認
vi /var/log/httpd/error_log
“`

“`
#ログ内容
[Mon Jul 19 13:41:39.413688 2021] [suexec:notice] [pid 3196] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jul 19 13:41:39.440099 2021] [lbmethod_heartbeat:notice] [pid 3197] AH02282: No slotmem from mod_heartmonitor
[Mon Jul 19 13:41:39.440194 2021] [http2:warn] [pid 3197] AH10034

元記事を表示

PHP基礎まとめ

未経験からPHP実務半年の駆け出しエンジニアです。
実務と学習で学んだ内容を整理のための記事です。
(学習内容は山浦清透さんの[独学エンジニア](https://dokugaku-engineer.com/course/serverside)というサイトで学んだものをベースにアウトプットしています。エンジニアとしての基礎力を習得したい方にはオススメです。)
PHP初心者の方は良ければ参考にしてください。

## 実務レベルで必要な姿勢(3つ)
1. 自分が理解したコードのみ書くこと
コピペで動いたからOKでは障害や問題等のエラー発生時に対応できない。
2. 読みやすいコードを書く
機能追加や修正は必ずある。その際にパッとみて分かるコードでないと対応できない。
(チーム開発や将来性を見越しているか)
3. 変更しやすいコードを書く
その場限りのコードではなく、機能の変更しやすいコード、拡張性の高いコードを書く。
(運用のこともイメージできているか)
※オブジェクト指向の設計手法が変更・拡張性のしやすいコードに繋がる

## PH

元記事を表示

PHP 任意の文字列の中に指定の文字列があるかどうかを調べる

# 目的

– 任意の文字列の中に指定の文字列があるかどうかを調べる`strpos()`メソッドについてメモ的にまとめる

# 情報

– 筆者は下記のサービスを使用して当該メソッドの動作検証を行った。
– [https://paiza.io/ja](https://paiza.io/ja)

# 方法

– 下記のように記載することで任意の文字列中に指定の文字列があるかどうかを調べる事ができる。

“`php
strpos(‘任意の文字列’, ‘指定の文字列’);
“`

– `strpos()`メソッドの戻り値
– 任意の文字列内に指定の文字列が存在した場合、「任意の文字列の先頭から指定の文字列までの文字数」をバイト単位で返す。~~(日本語は2バイト文字なので注意)~~
– 任意の文字列内に指定の文字列が存在しなかった場合、`false`を返す。(この関数はboolのfalseを返すが、「falseとして評価される値」を返す可能性があるらしい。戻り値の比較には`===`演算子を使用して厳密に比較する必要がある。)

# 例

元記事を表示

Composerのインストール手順

## Composerとは

PHPの依存管理ツール。パッケージ管理ツール。

## パッケージ管理ツールとは

パッケージとは便利ツールなど複数のファイル一式が集まったもの。
パッケージを使用するには別のパッケージが必要だったりする。これを依存関係という。
インストール時やアップグレード時には依存関係にあるパッケージを自動でインストールやアップデートしてくれる。

## インストール手順

“`jsx
//①composerのインストール
curl -sS https://getcomposer.org/installer | php
//-sは通常出力される進捗状況表示やエラーメッセージ表示を表示しないようにする
//ただし-Sを同時に指定することでエラーメッセージの表示抑制は行わない、

//②composerのファイルを/usr/local/binに移動
sudo mv composer.phar /usr/local/bin/composer

//③composerのアクセス権限を変更する
chmod a+x /usr/local/bin/composer
//a+xは全

元記事を表示

MAMPでタイムゾーン変更が反映されない時

#MAMPでphp.iniファイルのtimezone設定を変更したのにタイムゾーン変更が反映されない
php.iniファイルを編集したはずなのに変更が反映されない
どうして?

##確認1 編集したphp.iniファイルは正しいですか?

### php.iniファイルの場所の確認
1, MAMPコントローラーからWebStartボタンをクリックしMAMPのページを開きます
2, **Tools**メニューから**phpinfo**を選択します。
3, **phpinfo**が表示されたら**Loaded Configuration File**の項目を確認します。
ここに編集すべきphp.iniファイルの場所とファイル名が記載されています。`/Applications/MAMP/bin/php/php(バージョン番号)/conf/php.ini`

このファイルを編集しないと変更が反映されません。

### よくある間違い
`/Applications/MAMP/conf/php(バージョン番号)/`フォルダに有る`php.ini`ファイルを編集した。

##確認2 php.iniフ

元記事を表示

【PHP8.1】finalクラス定数が作れるようになる

クラス定数は上書き可能です。

“`php
class FOO{
public const HOGE = 1;
}

class BAR extends FOO{
public const HOGE = 2;
}

var_dump(BAR::HOGE); // 2
“`

定数なのに上書き可能とはこれ如何に。

クラス定数ではない通常の定数は当然ですが上書きできません。

“`php
const HOGE = 1;
const HOGE = 2; // E_WARNING

echo HOGE; // 1
“`

エラーではなくE_WARNING止まりってのはよくわかりませんが、ともかく値は変更できていません。
定数は上書きできないのにクラス定数は上書きできるというのはよくわかりませんね。

まあ、実は他の言語もだいたいこんな仕様だったりするのですが。

“`java:Java
class A{
static int num=0;
}

class B extends A{
static int num=10;
}
“`

そんなわけで絶対

元記事を表示

Laravelプロジェクトをcloneした後、「500 Server Error」が表示される

#原因
環境構築時に.envファイルが作成されていなかったことでした。

#前提
Laravelで作成されたアプリケーションには.envファイルが必要です。
.envファイルはアプリケーションが実行されるときの環境ごとの設定値を持ちます。

引用:[Laravel 7.x 設定](https://readouble.com/laravel/7.x/ja/configuration.html)
>新たにLaravelをインストールすると、アプリケーションのルートディレクトリには、.env.exampleファイルが含まれています。ComposerによりLaravelをインストールした場合は自動的に、このファイルは.envにコピーされます。Composerを使わずにインストールした場合は、コピーしてください。

Composerを使ってインストールしたので、.envができている想定でしたが今回は作られていませんでした…。
.gitignoreに「.env」が設定されてしまっていたから?

#今回の事象
1. composer installコマンドの実行時に.env.exampleをコ

元記事を表示

PHP文法(1)

## はじめに
個人的に学びになったことを書きます。
if文、for文など基本的な文法ではなく、メソッドの使い方などがメインになってくると思います。

## 宇宙船演算子
“`php
85); //結果:0
var_dump($point <=> 70); //結果:1
var_dump($point <=> 99); //結果:-1
?>
“`
| 比較結果 | 意味 |
| —- | —- |
| 0 | 右辺と左辺が等しい |
| 1 | 右辺が左辺より小さい |
| -1 | 右辺が左辺より大きい |

## 配列の合成
配列の合成をするには+とarray_merge関数の2つの方法がありますが下記の通り動きに違いがあります。

| 合成の方法 | 配列を合成時の挙動 | 連想配列を合成時の挙動 |
|———–|——————-|———————-|
|+記号を使う| 同一キー番

元記事を表示

Laravelしくじり先生その2「sesionsテーブルのidの型はBIGINT!じゃない!!」

#TL;DR
“VARCHAR(255)“(NOT NULLと主キー制約付き)でした。

#前提
– Laravel Valetで開発環境を構築しています(Docker不使用)
– Laravel 8.41.0
– PHP 8.0.8
– Nginx 1.21.1
– macOS Big Sur 11.4
– Laravel Fortifyの認証機能を使用しています
– .envファイルにて“SESSION_DRIVER=database“にしています。
– .envファイルにて“APP_DEBUG=false“にしています。
– データベースmigrationに、[Laravel純正のもの](https://readouble.com/laravel/8.x/ja/migrations.html)ではなく[ridgepole](https://github.com/ridgepole/ridgepole)を使用しています

# 事の発端
本番環境を構築してログインページからフォームのPOSTを送ったところ下記の画面が表示されました。
“419|期限切れのページ“
「L

元記事を表示

OTHERカテゴリの最新記事