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

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

【baserCMS】AdminPageEditable プラグインを作りました。

こんにちは!
私は普段CMSを使ってコーポレートサイトを構築しているWEB系のエンジニアです。
なかでもbaserCMSを使って構築することが多いでのすが、今回専用プラグインを作ったのでご紹介です。
baserCMS4.5.4で当該プラグインが動作することを確認しました。
※4系の最近のバージョンだと動きそうですが3系とかはまったく動作しないかと

# 前提

CMS、PHPフレームワーク、MVCモデルがわかる
イベント処理がわかると尚良いかも

# baserCMSとは
https://basercms.net/about/index.html

# AdminPageEditable プラグイン

## 概要

baserCMSでは管理画面で自由に固定ページを追加、編集することができます。
コンテンツ編集エリアにテキストや画像などのファイルを貼り付けたりできる高機能なwysiwygエディタを備えているのですが時々一部どうしてもcssやjs、phpを使用して動的表示したい場合があると思いますがそういうかゆいところに手が届く機能が固定ページ編集画面に「コード」欄としてデフォルトで存在し

元記事を表示

クリスマスイブなのでハートをパーティクルで作りましょう!

はじめに

皆さん!こんにちは!
1年は早いもので、気づけばもうクリスマスイブです!
クリスマスにちなんで今回はハート型にパーティクルを展開するコードをメモ程度に残しておこうと思います!

注意

筆者は時代の流行に追いついていないので**PocketMine-MP3**を基準にしてこの記事を書いております。
ここに乗ってるコードを使用する際は、PocketMine-MP4の記述方法に変更してから実装してください。
それとこの時期はExplosionクラスも用意したほうがいいかも!

数式

ハートに描画する数式は以下のとおりです。
筆者は数学が死ぬほど嫌いなのでネットで探したりそれを[scratch](https://scratch.mit.edu/)で試したりしてます。

“`
x+size*sin(rad)^3*2
y+2+(size*cos(rad)-cos(rad)^4)*2
“`

実装

実際にプラグインで実装してみます。

“`php
for ($i=0; $i<360; $i+=10) {

元記事を表示

ポートフォリオを公開してたらサイバー攻撃された話 〜Laravelで多重送信対策をしよう〜

## 初めに

去年の今頃、私は未経験からサーバーサイドエンジニアを目指して転職活動をしていて、
Laravel6系で開発したポートフォリオをインターネット上に公開していました。

実装のツメが甘い部分もあり、いろんなイタズラをされては対策して..を繰り返していましたが、
ある日容赦ないサイバー攻撃をくらってしまい、サーバーが死にかけるという経験をしたので
今回はそんな当時の出来事と、どう対策したかを記事にしてみようと思います?

現在 転職活動でポートフォリオを作成されている方や、プログラミング学習中の方のご参考になれば幸いです?

## 最初はまだイタズラレベルだった..

当時開発していたポートフォリオは、朝活をテーマにしたSNSアプリでした。
twitterみたいに、ユーザーが投稿できる機能があります。

![スクリーンショット 2021-01-15 22.59.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613419/87067860-

元記事を表示

初心者が語るフレームワークの違いと魅力 ~CakePHPとLaravel~

# 自己紹介
これは[ランサーズ Advent Calendar 2021 24日目](https://qiita.com/advent-calendar/2021/lancers)の記事です。

こんにちは!
24日、クリスマスイブの記事を担当しますのは、Lancersでエンジニアインターンをしている高橋宏和です。

私は2021年3月から10ヶ月ほどインターンを行なっており、以下の開発を経験させていただきました。

– **3月〜10月: CakePHP**?
– 管理画面
– バッチ
– [lancers.jp](https://www.lancers.jp/)

– **10月〜12月: Laravel**
– [Menta](https://menta.work)

Web開発初心者がCakePHPとLaravelによる開発を経験してみて感じた違いと、これいいなと感じたことを僕の主観に基づいて率直にまとめています。フレームワークとしてのCakePHPとLaravelの違いだけでなく、LancersとMentaの開発の違いにも少し触れていきます。

CakePHPの

元記事を表示

「〇〇でハマった。。」を避けるコーディング

## はじめに

**書いたコードが思い通りの挙動をしないが、なかなか原因が分からず困り果てる**

俗に言う、「ハマってしまった」状態。

– 予約語を知らないうちに使っていた
– 全角空白や制御文字が混入していた
– ポインタや参照を経由して値が変更されていた
– 演算子の優先順位を誤解していた
– 囲むやつ(カッコ、do-end、if-fi)の数は合っているが場所がずれていた
– 言語仕様上、必要な空白が抜けていた
– **原因わからないけど、いろいろ弄ってたら直った!!!**

などなど^^;

仕事で「ハマる」と、予実が大きく乖離していき**プロジェクトに迷惑がかかります**。
プライベートで「ハマる」と、楽しかった作業が一気につまらなくなり**モチベーションだだ下がり**です。

挙げたリストの中には、「知らないと分からないよね〜」というものもありますが
**コーディングの手順を工夫すれば、より短い時間で解決できる**ものも多いです。

今回はそんな「ハマる」を避ける為の工夫をまとめたので、紹介します。

## この記事で伝えたいこと

– ハマらない為の心構え
– ハ

元記事を表示

新卒のコードリーディング

##始めに
こんにちは、@S_onizawaです。
こちらは[CYBIRDエンジニア Advent Calendar](https://qiita.com/advent-calendar/2021/cybird) 24日目の記事です。
前回、23日の記事は@gumitaさんの『応用情報技術者試験に向けて失敗から学んだ対策法』です。
非常に簡潔にまとめられていてわかりやすいですね!
応用情報技術者試験だけじゃなくて他の試験にも通ずることがあるのですごく参考になりました!

###自己紹介
私は2021年にCYBIRDへ新卒入社し、現在はサーバーサイドエンジニアとして主にPHPを扱っています。
大学からUnityやC言語、C++、JAVA、PHPなど様々な言語に触ってきました。
その中でサーバーサイドエンジニアに興味を持ち、この業界に入りました。

##この記事について
新卒で入社して、実際の業務でコードを読んだ時に思ったことについてまとめようとしたものです。
記事の内容としてはコードリーディングについてが主となります。
正直当たり前のようなことしか書いていませんが、初心に返った気持ちで

元記事を表示

PHP ファイルパスやURLからファイル名や拡張子等を取得する

# 目的

– ファイルパスやURLから最後のファイル名や拡張子などを取得する方法をまとめる

# 詳細

– 下記のサービスを用いて今回紹介するコードの検証を行った。
– [https://paiza.io/ja](https://paiza.io/ja)

# 方法

### `/`で区切られた最後のフィールドを取得する。

– `https://qiita.com/miriwo`の`miriwo`の部分を取得したい場合、下記の様に記載する。

“`php

元記事を表示

DockerでLaravel×Elasticsearch環境を作る

# 前提条件

## 環境

・ローカル

検証端末:MacOS Monterey (12.1)

docker:Docker version 20.10.11, build dea9396

docker-compose:v2.2.1

・Docker環境

PHP:8.0.13

MySQL:8.0.27

Elasticsearch:7.12.0

## 読むべき人

Elasticsearch導入したことない人。

家で検証してみたい人。

Elasticという響きがかっこいいなーと思ってる人。

# コンテナの構成

・nginx

リクエストを最初に受けるサーバー

・php

Laravelが動作するコンテナ。

・mysql

メインのデータストレージとして使用するDB。

・Elasticsearch

全文検索エンジン。Scout経由で使用する想定。

・node

画面実装にはないと困るので。

# Laravelのモジュールをクローンする

“`
git clone https://github.com/laravel/

元記事を表示

【PHP】buttonタグのsubmitした値がPOSTされなかった話

# クリックしたボタンによって処理を分ける

formでpostする際において複数のボタンを設置している場合、クリックしたボタンの値を受け取って処理を分岐できる。
例えばメールフォームなどで、確認画面から入力画面に戻るか、送信するかという場合、以下のような処理で実現できる。

“`html



“`

“`php
$action = (string)filter_input(INPUT_POST, ‘action’);

if ($action === ‘back’) {
// 入力画面に戻る処理
// リダイレクトとか
}

// 送信処理
“`

なんてことない、よくある実装だ。

# buttonの値が送信されな

元記事を表示

「PHP Warning: PHP Startup: Unable to load dynamic library ‘curl’ 」の対処方法

#はじめに
Windowsサーバーで laravelを動かすときに、apacheのログファイル(`C:\Apache24\logs配下`)に警告が出たため、その対処法をまとめます。

#環境
– windows server 2022
– apache:2.4.51
– php:8.1.0
– composer: 2.1.14
– laravel 8.7

#エラー内容

“`log:\Apache24\logs\error.log
PHP Warning: PHP Startup: Unable to load dynamic library ‘curl’ (tried: c:\\php8\\ext\\curl (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\xa2\xe3\x82\xb8\xe3\x83\xa5\xe3\x83\xbc\xe3\x83\xab\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\

元記事を表示

PHP 言語構造ってなんだ???

# 目的

– 「オーバーヘットがあるから`is_null()`より言語構造の`isset()`か`empty()`を使ったほうがいいかもね〜」って教えてもらって「言語構造」がそもそもよく分かっていなかったので調べてみた

# 言語構造

– 下記のリンク先に記載されているキーワードはすべてPHPの言語構造である。
– [https://www.php.net/manual/ja/reserved.keywords.php](https://www.php.net/manual/ja/reserved.keywords.php)
– `これらは言語を構成するものです`と言われている通り、どうやらこの一覧に記載されているものはPHPの言語を構成するそのものらしい。
– この一覧の中に`isset`や`empty`が含まれており、これらは呼び出し方法こそ関数に似ているけど関数とは全く別物らしい。
– その証拠に`isset`と`empty`の公式マニュアルには`注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。`と記載されている。

元記事を表示

【PHP】マッチ機能

マッチングアプリによくあるマッチ機能を実装しました。
![match 1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/852fd507-f292-775f-6aff-912c7b032092.gif)
#スワイプカード
まずはスワイプを行うカードを作成します。
![swipe_card.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/a6d3224f-64b0-c486-2ced-da7cbddbc6bf.gif)

“`html

元記事を表示

[Laravel] データベース操作

“`
php artisan make:model SampleModel
“`

“`php:App/Models/SampleModel.php

元記事を表示

PHP の各バージョンを検証するための docker-compose

PHPのアップグレードのために細かい動作を確認したくて、
1つの docker-compose に検証用環境全部詰め込んでみました

## 検証用の docker-compose ファイル

“` docker-composel.yml
version: ‘3’
services:
php-8.1:
image: “php:8.1-cli”
stdin_open: true
php-8.0:
image: “php:8.0-cli”
stdin_open: true
php-7.4:
image: “php:7.4-cli”
stdin_open: true
php-7.3:
image: “php:7.3-cli”
stdin_open: true
php-7.2:
image: “php:7.2-cli”
stdin_open: true
“`

ファイルはこれだけ
`stdin_open: true` をつけているので実行プロセスが特になくてもコンテナが終了せず利用できます

元記事を表示

MAMP htdocs開いてもエラーが出る

MAMPでwebサイトを開こうとしても
If you can see this page, MAMP has been properly configured & launched and is now all set to serve your web content. This placeholder page1 should be replaced or deleted.
[スクリーンショット 2021-12-23 10.15.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858841/0cfd9ac3-2907-5242-8c7d-3f57beea0274.png)

が出て、パス一覧が表示されない場合は、htdocs/index.php のファイルを削除すると、エラー文が消える!

元記事を表示

Symfony版Livewireこと、Live Componentさん

[Symfony Advent Calendar 2021の](https://qiita.com/advent-calendar/2021/symfony)記事です。
今回はSymfony UXの新機能、Live Componentについて書きます。

## Symfony UXとは
なるべくサーバサイドのことに注力できるように、フロントエンドのUXに関するJavaScriptとサーバサイドをうまいこと繋ぎ込んでくれるライブラリ群です。
composerでサーバサイド側のプログラムとnpmパッケージをダウンロードして利用します。
2021年12月現在、以下が用意されています。

| name | 内容 |
|—|—|
| UX Chart.js | Chart.jsがいい感じにつかえるやつ |
| UX Cropper.js | Cropper.jsがいい感じにつかえるやつ |
| UX Dropzone | ドラッグ&ドロップでファイルアップロードできるようにしてくれるやつ |
| UX LazyImage | 画像遅延読み込みをいい感じにしてくれるやつ |
| UX Sw

元記事を表示

【PHP】データベースを使わずにログイン機能を作ってみる

# はじめに
「**データベースを構築して運用するほどではないけど、ログイン機能を実装して簡単なシステムを作りたい**」と思ったことはありませんか?
実装したいシステムのユーザ数がそれほど多くない(~数十程度)なら、データベースを作らなくても、「**BASIC認証のしくみ**」×「**テキストベースのユーザーデータ保存**」を使えば、最低限のセキュリティを考慮したログイン機能が作れます。
セキュリティ対策を万全にするにはデータベースを使うのが通例だと思いますので、実装したいシステムとユーザーが扱うデータに機密情報が含まれるようなものは作らないでください。

PHPでログイン機能を作るときデータベースと連携してユーザー情報を扱う方法はたくさん紹介されているので、あえてデータベースを使わずにログイン機能を実装する方法を紹介します。

# どんな方向けの記事か

– PHPが動作するレンタルサーバを契約し、**自前のHTMLを作成してWebサイトを運営している方**
– サーバのデータベースに利用制限があるがログイン機能を実装したい方
– データベース構築の知識があまりない方
– さくっと簡

元記事を表示

【Laravel5系】外部キーを2つ持つテーブルのリレーション

#やりたかったこと
ツイッタークローンのアプリを作成中。
ユーザのフォロー・フォロワーの管理をするfollowsTableから、ログイン中のユーザのフォロー人数、フォロワー人数がほしい。

#マイグレーション
usersのidをずっと「increments」にしててmigrateでエラーになってた。
→followsの「unsignedBigInteger」に合わせたら解消した。(合ってるのかな?)

– usersTable

“`create_users_table.php
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘users’, function (Blueprint $table) {
$table->unsignedBigInteger(‘id’)->auto

元記事を表示

CarbonのSetTestNowの仕様変更

`Carbon::setTestNow()`で現在時刻を固定し、`Carbon::now()`で固定した値になっているかを確かめる以下のようなテストがあります。

“`php
format(‘Y-m-d H:i:s’),
Carbon::now()->format(‘Y-m-d H:i:s’)
);
}
}

“`

つい最近まではこのコードで問題なかったのですが、最近の`Carbo

元記事を表示

PHP 真偽値の判定 個人メモ

# 目的

– PHPにおける真偽値の判定方法をメモ的にまとめる

# 真偽値の判定アレコレ

– そのままif文の判定箇所に入れる。

“`php

元記事を表示

OTHERカテゴリの最新記事