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

PHP関連のことを調べてみた2022年02月06日
目次

Docker composer のインストールでバージョンを固定する方法

# 概要

– DockerのPHPコンテナにcomposerをインストールする時のDockerfileの記載でcomposerのバージョンを固定する方法をメモ的にまとめる

# 方法

– 下記の様にPHPのDockerfileのcomposerインストール部分を記載することでcomposerのバージョンを2.2.4に固定する。

“`Dockerfile
# composerのインストール
RUN php -r “readfile(‘https://getcomposer.org/installer’);” > composer-setup.php && \
php composer-setup.php –filename=composer –version=2.2.4 && \
php -r “unlink(‘composer-setup.php’);” && \
mv composer /usr/local/bin/composer
“`

元記事を表示

laravel PHP バージョンを指定してuuidを生成する

# 概要

– uuid バージョン4の生成方法は下記で説明したが、その他のバージョンのuuidを取得する方法をまとめる
– [laravel uuidの生成(uuid version4のみ)](https://qiita.com/miriwo/items/25d2331dff5549d2a834)
– 本方法でバージョン1〜6までのuuidの生成をする事ができる。

# 方法

– ramsey/uuidというcomposerのライブラリを取得して使用する。
– [https://github.com/ramsey/uuid](https://github.com/ramsey/uuid)
– 下記コマンドを実行してramsey/uuidを取得する。

“`terminal
$ composer composer require ramsey/uuid
“`

– 下記の様にuseを記載することですぐにuuidを生成する事ができる。(下記はuuid バージョン4を生成)

“`php
use Ramsey\Uuid\Uui

元記事を表示

composer インストール時にバージョンを指定する

– 2.2.4に固定したい時は下記

“`
$ php -r “readfile(‘https://getcomposer.org/installer’);” > composer-setup.php
$ php composer-setup.php –filename=composer –version=2.2.4
$ php -r “unlink(‘composer-setup.php’);”
$ mv composer /usr/local/bin/composer
“`

# 参考文献

– [https://getcomposer.org/download/](https://getcomposer.org/download/)

“`
–version
You can install composer to a specific release by using the –version option and providing a target release. Example:

php composer-setup.php –version=1.0.0

元記事を表示

良い感じのphpのクエリビルダを探して

さくっとphpを書く時に、フレームワークを導入するまでも・・・。な時に一番困るのがmysql用のライブラリ。直書きはちょっとめんどい。と言うわけで良い感じのクエリビルダを今のうちに探してメモしておくまん。

https://packagist.org/packages/usmanhalalit/pixie

シンプル。グループの記法が個人的に結構好み。

“`php
QB::table(‘my_table’)
->where(‘my_table.age’, 10)
->where(function($q)
{
$q->where(‘name’, ‘LIKE’, ‘%usman%’);
// You can provide a closure on these wheres too, to nest further.
$q->orWhere(‘description’, ‘LIKE’, ‘

元記事を表示

mysqlで絵文字以降が消える問題の対策(PHP)

表題通り。

複数データをserializeしてmysqlに収納していたら、一部データが吹っ飛ぶことがあった。調べると絵文字のせいで、そこ以降の文字列が全てふっとび、serializeとしてのデータを保持できずに、変換できなくなっていた。これの対策をする。

mysqlのバージョンが低いと、UTF-8環境で絵文字が吹っ飛ぶらしい。なので、これを回避するために、文字列を全てエンコードしちゃうという力業にでる。

“`php
function my_serialize($obj) {
return json_encode(serialize($obj));
}

function my_unserialize($obj) {
$temp_obj = json_decode(@unserialize($obj), true);
if ($temp_obj) $obj = $temp_obj;
return $obj;
}
“`

シリアライズした文字列をjsonでエンコードすることで、絵文字用の文字列も全てエンコードしてしまう。それをデコードするときは、

元記事を表示

PHP基礎 ~連想配列編~

## はじめに
この記事はフロントエンドエンジニアがバックエンド言語を勉強しようとアウトプット目的で書いている記事になります。
自分用のメモとして書いていきます。

## 配列
“`php
$array = [‘りんご’,’みかん’,’バナナ’];
echo $array[1]; // みかん
“`
JavaScriptとあまり変わらないですね。
「$」がつくとテンプレートリテラルっぽいですね。

## 連想配列
“`php
$company = [
‘開発部’ => [
‘佐藤さん’, ‘鈴木さん’, ‘田中さん’
],
‘総務部’ => [
‘青木さん’, ‘高田さん’, ‘小林さん’
]
];

echo $company[‘開発部’][1]; // 鈴木さん
“`

ふむふむ、オブジェクトのキーとバリューは「=>」で表現するのね。
なんだかアロー関数みたいだ。

### もっと高階層にしてみる
“`php
$company = [
‘開発部’ => [
‘佐藤さん’ => [
‘身長’ => 170,

元記事を表示

一部ディレクトリだけWordPress導入したサイトの、共通部分二重管理問題を解決する

#背景
もともと静的HTMLで作ったサイトに、更新コンテンツなど一部ディレクトリだけWordPressを導入するってケース、あると思います。
フルで全ページWordPressで作ったサイトでは、ヘッダーやフッターなどの共通部分はWordPressテーマだけで管理できますよね。
でも、一部ディレクトリだけWordPressだと、そうはいかない。
ヘッダーフッターなど共通部分に更新が入ったら、HTML内の該当部分を編集して、WordPressテーマのheader.phpとfooter.phpも編集して…って効率がよろしくない。ミスもありそう。
一括管理したい!!!!
ということで、一括管理できるようにしました。

#ファイル構成
こんな感じの構成のサイトだとしましょう。

“`
.
├── index.html
├── about
│ └── index.html
├── assets //画像やCSSはここに格納
└── wordpress // wordpressディレクトリ
└── wp-content
“`

#手順
###PHPが動くようにする
まず、index

元記事を表示

paiza PHP Bクラス 過去問の日別訪問者数の最大平均区間(前半)

タイトル通り、paizaのPHP Bクラス 日別訪問者数の最大平均区間を自力で何とかクリアしたのですが
PHPは解答コードがなかったため、自力でやるしかなく足りない頭がパンクしました。笑

もっとスマートな書き方があるとは思いますが、
初学者の方などの参考になればと思いますのでよろしくお願いします。

問題文はこちらから確認してください。
https://paiza.jp/works/mondai/skillcheck_archive/max_range

コードの記入はpaiza.ioを利用して、入力などを行ってます。
paiza.io:https://paiza.io/ja/projects/new

ではコードを書いていきます!
###1.入力値を求める

“`
[$n, $kya] = explode(‘ ‘, trim(fgets(STDIN)));
$log = explode(‘ ‘, trim(fgets(STDIN)));
“`
$nには全n日分の日数、$kyaにはキャンペーンを行った日数がわかります。
$logにはn日分の一日分の閲覧数の値が入ります。

pai

元記事を表示

Google SpreadSheetを簡易CMSとして使ってみた

## 背景
WEB制作に関して、CMS化するほどでもないけど、サイトの外部で簡易データベース的な管理をしたいという要望があったため、Google SpreadSheetを簡易データベースとして使用するコードを書きました。
## 注意点
– SEOを考えると、CMS化するなりして頑張ってサイト更新した方がいいかもしれないです。
– Google Apiを使用しますが、これに更新が走ると動かなくなることがあります。定期的にチェックしましょう。

## 手順
### Google SpreadSheetをJSONで取得する
こちらの記事を参考に。APIキーなどを発行します。

【最新版】Google SpreadSheetのデータをJSONで取得する手順

スプレッドシートのデータの形は、1行目にデータの項目名、2行目以降に実データが入っていると仮定します。
ここではこんなデータということにしましょう。
これをHTMLに出力します。
![スクリーンショット 2022-02-04 22.22.09.png](https://qiita-image-store.s3.ap-northe

元記事を表示

Setup : windows server IIS + PHP 8.x + Laravel 8.x + MariaDB 10.x for Unit Testing

#Outline

Unit Test , Integration (Feature) Test をonboadingで使用するために、phpの環境を構築した。
unit testができるまでの構築手順である
versionによって微妙にコマンドが異なったり、windowsでそもそもする人が少ないので、該当する方々の参考になればと思います

#PHP
## 1. install PHP
https://www.php.net/
php windows versionのzipをダウンロードする。
今回、IISでFastCGIModuleで動かすため、Non Thread Safe versionを使う。

その後、任意のフォルダに配置する。
今回は、 C:\phpに置く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/a88e68e2-a612-8887-e55d-974bef5ac8cd.png)

## 2. install xdebug

元記事を表示

Githubでフォルダに矢印がありファイルの中身が見えない

開発環境

・php
・mysql
・apache
・docker
・Laravel

いわゆるLAMP環境です。

起こってる現象

githubにプッシュするまでは良かったのですが、
プッシュした後一度正常に出来たか確かめたら
タイトルのような現象になっており、
laravelプロジェクト本体のみファイルの中身が閲覧不能状態になっていました。

laravel-cms/
 ├ app/(laravelプロジェクト)←これのファイルの中身が見えない状況
 ├ docker/
 │ └ Dockerfile
 └ docker-compose.yaml

試行錯誤してみる

まずcommitメッセージを確かめて見ました、すると“`サブモジュールが<該当ファイル>に追加されました。“`と出ていました。

その次にターミナル場で“`git ls-files“`でリポジトリで管理しているファイルを一覧表示できますので確かめてみたら・・・・

“`terminal
.DS_Store
.gitattributes
README.md
a

元記事を表示

PHP用SlackAPIのUtilityライブラリを公開しました!

タイトルの通りです!!
私が長期インターンでおこなった業務の中に、PHPでSlackAPIを使うものがいくつか含まれていて、今後使うことがあるかもしれないメソッドがあったので、経験の意味も込めて、ライブラリにして、composerで使えるようにPackagistで公開してみました!!

##リンク
・Githubリポジトリ
https://github.com/Hottomo0610/php-slackapi-util

・Packagist
https://packagist.org/packages/hottomo/slack-api-utility

##作った経緯と感想
今まで自分が作ったもので何か外部に公開できるものが欲しい、そしてあわよくば就活で使いたい、という浅ましい考えのもとに作りました(なおレベルが低すぎるので恥ずかしい)。
もちろんライブラリの公開というのは初めての経験だったので、とても新鮮な気持ちでしたし、自分が作ったものが世に出るってこういうことなんだな、と思いました。

正直特に感想とか思いつかなくてゴミみたいな文章書いてしまいましたが、このライブラリ、ぜ

元記事を表示

Codeigniter4の’Access-Control-Allow-Origin’対策やAPI用出力のやり方

javascriptsのajax処理とかでAPIを作ったりすると、「’Access-Control-Allow-Origin’」のエラーが出たりする。のでそれの対策。

“`php
header(‘Access-Control-Allow-Origin: *’);
header(“Access-Control-Allow-Methods: POST,GET, OPTIONS”);
header(“Access-Control-Allow-Headers: *”);
“`

これを追加することで’Access-Control-Allow-Origin’を回避することができる。

次に、json以外の余計な出力をしないようにする。

“`php
use ResponseTrait;
function api() {
header(‘Access-Control-Allow-Origin: *’);
header(“Access-Control-Allow-Methods: POST,GET, OPTIONS”);
hea

元記事を表示

テスト

この記事はテスト記事です。

元記事を表示

【Laravel 8.x】Factoryヘルパーを瞬時にStaticメソッドに変換しませんか?

# Laravel-Factory-Refactor

Laravel 8.x からFactoryの呼び出し方が大きく変更されました。

“`php:Laravel7.x以前
//ヘルパー
factory(User::class)->make()
“`

“`php:Laravel8.x以降
//staticメソッド
User::factory()->make()
“`

上記の変更をコマンド1つで完結できるパッケージを作成しました。

https://packagist.org/packages/wadakatu/laravel-factory-refactor

## How to Use

### 1. パッケージをインストール

“`bash
composer require wadakatu/laravel-factory-refactor –dev
“`

### 2. Artisanコマンドを実行

“`
php artisan refactor:factory
“`

### 3. 結果を確認

“`php:Before
factory(User:

元記事を表示

PHPのエラーメッセージ有効化はphp.iniを使った方が良い

ini_set(‘display_errors’, “On”);
だと、セミコロンが無い時。真っ白の画面になります。
どこでエラーが出ているか分かりません。

まずはphp.iniを探します。
[info.php]を作って中身を

にします。

ブラウザから /info.php を見れば出ています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483166/9950f709-9089-be5f-9383-9e6b777aa021.png)
「Loaded Configuration File」で検索してください。

ちなみに。
php -info|grep php.ini
を実行してもphp.iniファイルが見つかりますが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483166/d2698fb6-bc19-c2e0-2716-6d718fad5

元記事を表示

Laravel バリデーション パスワードでは半角英数字記号・・・

Lravel に限った事ではないのですが、パスワードの入力チェックで
1. 必須
2. 8文字以上
3. 半角英数字記号を1文字以上含むこと
4. 確認入力のものと一致すること
なんてものがあります(4はもう古いチェックかもしれませんが)。

以下で解決します。

“`
‘rules’ = [
‘password’ => ‘required|confirmed|between:8,128|regex:/\A(?=.*?[a-z])(?=.*?\d)(?=.*?[!-\/:-@[-`{-~])[!-~]+\z/i’,
];

‘attr’ = [
‘password’ => ‘ログインパスワード’,
];

‘msg’ = [
‘password.regex’ => ‘:attributeは半角英数字記号それぞれ一文字以上使用してください’,
そのほかメッセージ
]
“`

間違ってましたらご指摘お願いします。

元記事を表示

三項演算子

if (a == b) {
b = 1;
} else {
b = 2;
}

b = a == b ? 1 : 2;

と書き換えられる。
可読性の向上が期待できる。

元記事を表示

【Atcoder for PHP】二次元配列の標準入力について調べる。

はじめまして
趣味的な動機でAtcoderを初めて1か月。全然わからない日々が続いております。実は今現在、パイザラーニングに逃げているのが現状だったりします。

さて、競プロ初心者に最大のネック、標準入力
これについて、いろいろと調べていこうと思っています。
まずは直近で悔しかった二次元配列の取得と出力をPHPにて調査してみました。
他の標準入力についても、今後まとめていこうと思っています。

#二次元配列の取得方法

入力例

|x |[0]|[1]|[2]|[3]|
|—|—|—|—|—|
|[0]|1 |2 |3 |4 |
|[1]|5 |6 |7 |8 |
|[2]|9 |10 |11 |12 |

###(1)データ数が分からないとき
こちらはパイザでも使える標準入力・・・など初心者向けに出てくるパターンです。
どんなデータがどれだけあるか分からないときは下記のコードを利用しましょう。

“`
//1行づつ配列を取得
while ($line = fgets(STDIN)) {
$tmp[] = trim($line);

元記事を表示

Laravel + jQueryでサイト内お気に入り機能を実装してみた

# 概要

今回は`Ajax`を利用したサイト内お気に入り機能の実装方法を紹介します

![スクリーンショット 2022-02-03 0.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/9fb45609-f1b4-4fec-c70e-a0340103ea6c.png)

# お気に入り登録画面作成

“`php:index.blade.php

  • 元記事を表示

    OTHERカテゴリの最新記事