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

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

Magento上のフォームでJSバリデーションを駆使する

Webアプリケーションで避けて通れないものといえば「値チェック」。サーバーサイドで行うものはもちろん必要ですが、データを送信する前にJSでチェックするほうがUI/UX的に良いのは当たり前でしょう。
Magentoでは1系ではprototype.jsをベースにしたバリデーションが実装されていました。
2系はjQueryベースになっていますが、概ね同じ方式が使えます。

#MagentoのJSバリデーションが定義されている場所
Magento2系の場合、同じ様な定義が以下の箇所にあります。チェック処理の形式も似ていて、紛らわしいので注意が必要です。

– lib/web/jquery/jquery.validate.js
– lib/web/mage/validation.js
– lib/web/mage/validation/validation.js
– lib/web/mage/backend/validation.js
– lib/web/prototype/validation.js
– vendor/magento/module-ui/view/base/web/js/lib

元記事を表示

?【Laravel6】MariaDBから取得したJSON型の任意の値をBladeで表示する

## 環境
PHP 7.3.10
Laravel 6.5.0

## やりたいこと

MariaDBのに下記のようなデータがあり、
その内のcontentカラム(JSON型)のデータからvalueの内容である
「テストの内容です?」や「2の内容!!」をBladeテンプレートに直接表示したい

|id|content|del_flg|
|:——————:|:——————:|:——————:|
|1|{“data_kind”: “1”, “value”: “テストの内容です?”}|0|
|2|{“data_kind”: “2”, “value”: “2の内容!!”}|0|
|3|{“data_kind”: “1”, “value”: “削除済データ???”}|1|

本来であればVue.jsやReactとかで取得データを処理して表示するのが賢い方法だと思うが
それ以前の環境とかで無理やり表示したいことがあった

## やったこと

COntrollerでは普通にJSONの文字列としてデータ取得しでViewに渡す
Vie

元記事を表示

PHP HTMLのformから飛ばされた内容を受け取って表示する

# 目的

– HTMLのformタグ内でのinputとtextareaでの入力を受け取って出力する方法をまとめる。

# 具体的な例

– 下記にformタグの部分を抜粋したHTMLの内容を記載する。

“`html



“`

– 下記に前述のformタグから送られてきたデータを受け取り表示するPHPの内容を記載する。

“`php
echo $_POST[“name”];
echo $_POST[“body”];
“`

元記事を表示

perlなどのsprintf()で整数のゼロ埋めと少数の有効数字の設定を同時にしたい

## 実現したいこと
3.5を003.500のように設定したい

“`perl
# 答え
my $text = sprintf(“%07.3f”, 3.5); # -> 003.500となる
“`

## 1. 整数のゼロ埋め
例)3を003のようにゼロ埋めしたい

“`perl
my $text = sprintf(“%03d”, 3);
“`

## 2. 少数の有効数字の設定
例)3.5を3.500のようにしたい

“`perl
my $text = sprintf(“%.3f”, 3.5);
“`

## 3. 1と2を組み合わせたい
例)3.5を003.500のように表現したい
以下のように1と2の書式を単純に組み合わせた場合、意図した形式にならない。

“`perl
# 意図した形式にならない例
my $text = sprintf(“%03.3f\n”, 3.5); # -> 3.500となる
“`
以下のように設定することで意図した形式になる。

“`perl
# 意図した形式になる例
my $text = sprintf(“%07.3f”, 3.5

元記事を表示

【未経験エンジニア2日目(復習①)】URLの.htmlの削除

# URLの.htmlの削除

## やったこと
・URLの.htmlの削除

## 学んだこと
###hraccessの存在
###RewriteRule
 ディレクトリー内のURLを正規表現を用いて定義をすることができる
###RewriteCond
 RewriteRuleの条件を絞るこむために記載される(RewriteRuleの直前に記載される) 

## 実際のコード

“`.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
“`

参考サイト

.phpや.htmlなどの拡張子をURL表示させない方法
.htaccess でのリダイレクト(転送)設定の書き方

元記事を表示

PHP 関数の作り方

# 目的

– PHPでの関数の作り方をまとめる

# 書き方の例

– 下記に関数の定義方法を記載する。

“`php
//関数の定義(引数の有無に関わらず括弧をつけて変数を定義する)
function 関数名(第一引数を格納する変数A, 第二引数を格納する変数B){
関数内で実行する処理;
}

//関数の呼び出し(定義時に引数が格納される変数の定義の有無に関わらず括弧をつけて呼び出す)
関数名(第一引数, 第二引数);
“`

– 関数内での結果を変数に格納したい

“`php
//関数の定義
function 関数名(第一引数を格納する変数A, 第二引数を格納する変数B){
return 任意の処理;
}

$foo = 関数名(第一引数, 第二引数);
“`

元記事を表示

Laravel 日付関連の処理を施す

`Carbon`はphpに標準で存在するDateTimeクラスを拡張して、日付操作をより簡単にしてくれます。

まず、composerにCarbonをインストールしましょう。

“`
composer self-update

//composer –versionでバージョンの確認ができます。
“`

そしたら、composerにCarbonをインストールしましょう。

“`
composer require nesbot/carbon
“`

現在地点からの日時取得

“`php:hogehogeController.php

use Carbon\Carbon;

// 現在日時
$carbon_now = Carbon::now();
// 昨日
Carbon::yesterday();
// 今日
Carbon::today();
// 明日
Carbon::tomorrow();
//

元記事を表示

ちょっとお兄ちゃん?否定のフラグは絶対作らないでって言ったよね?

(CV: 渡部恵子)

## 普通のフラグ

“`php

元記事を表示

Joker123およびS128の最新のオンラインゲームゲームをプレイする

簡単な勝利の闘鶏オンラインS128のヒントとコツ

闘鶏のゲームでは、1回のプレイでアリーナに2羽の鶏が集まります。 2羽の鶏が1つのアリーナに置かれたので、次に何が起こるか推測できます。

闘鶏(英語)で訳されている場合、鶏と戦う(雄鶏と戦う)または他の名前の鶏(闘鶏)または雄鶏と戦う(雄鶏と闘う/闘う/闘う)。英語の翻訳では、「Bangkok Chicken」という用語は使用していません。バンコクバンコクコックファイトという用語は、実際には、首都がバンコクであるタイの国から最初に来た鶏の種類のローカル指定です。バンコクの鶏は格闘闘争になるキャラクターと本能を持っています。

タイでは、鶏はタイまたはタイの鶏と名付けられ、他の種類の戦いの鶏も、ベトナムやビルマ/ビルマ(ミャンマー)の鶏など、最初に発見された国の名前に基づいて名付けられます。

![0_SWQkSVIR4ElKK3hL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552714/a21cb73a-04dd-e263-e064-e8084

元記事を表示

laravel-adminでcheckboxをDBに保存

`larave-admin`はお手軽にさらっと管理画面を作れて便利です。
大まかな使用方法は他の記事にお任せするとして`checkbox`、`multiselect`などをDBに保存するにはひと手間必要なので備忘録的メモです

公式に記述があります。二つあるようですが今回はデータをカンマ区切りで登録する方法です。
https://laravel-admin.org/docs/#/en/model-form-fields

“`
class Post extends Model

public function getTagsAttribute($value)
{
return explode(‘,’, $value);
}

public function setTagsAttribute($value)
{
$this->attributes[‘tags’] = implode(‘,’, $value);
}
}
“`
そのまま引用しています。`get[elements]Attribute`と`se

元記事を表示

Laravel 6-Passport APIの主キーとしてのUUID

### Laravel 6 – UUID as Primary Key for Passport API

**チュートリアルを続けたくない場合は、このチュートリアルと同じ機能を備えたhttps://github.com/JamesHemery/laravel-uuidをいつでも使用できます**

**If you don´t want to follow the tutorial, you can always use https://github.com/JamesHemery/laravel-uuid which has the same functionality as this tutorial**

laravelをインストールする

Install laravel

ユーザーテーブルの移行の変更

modify users table migration

“`
$table->uuid(‘id’)->primary();
“`

パスポートをインストールする

Install Passport

移行を実行する

run migrations

composer

元記事を表示

クラスとは

#### 「クラス」とは
よくPHPの学習サイトではクラスは設計図に例えられます。
オブジェクト指向とは設計図(クラス)からインスタンス(オブジェクト)を作ることを言います。
このことからわかるようにオブジェクト指向では 「クラス」 というものが基本になります。

クラスは class を使用して、以下の書式で作成します。

“`
class クラス名 {
実装したい処理
}
“`

クラスが持つ変数を**プロパティ**と呼びます。
クラスが持つ関数を**メソッド**と呼びます。

“`
class Math {
//プロパティを定義
public $number1;
public $number2;

//メソッドを定義
function add() {
return $this->number1 + $this->number2;
}
function minus() {
return $this->number1 – $this->number2;
}
}
“`
プロパティは

public どこからでもアクセスできる
p

元記事を表示

php7.3からの新関数array_key_firstとarray_key_lastについて

配列の最初のキーを取得する際に
php7.3から**array_key_first*という関数が追加されました。

“`php
1, ‘b’ => 2, ‘c’ => 3];

$firstKey = array_key_first($array);

var_dump($firstKey);
?>
“`

“`
– 出力結果
string(1) “a”
“`

php7.2以前は配列の先頭要素を取り出そうとする際には
配列をreset()して…keys()で指定して取り出す…というようなことをしていましたが
この関数があれば配列の内部ポインタを変更する必要もなく一発で取得できるので便利ですね。

参照
https://www.php.net/manual/ja/function.array-key-first.php

元記事を表示

Laravelのバリデーションで、正規表現のパイプが使えない件

# Laravelのバリデーションで、正規表現のパイプが使えない件

### Laravelのバリデーション
Laravelには、いくつかのバリデーションルールが用意されており、パイプ区切りで実行したいルールをvalidateメソッドへ渡すことで、複数のルールを利用することができる。

[バリデーションルールの例]

| ルール | 説明 |
|:-:|:-:|
| email | フィールドがメールアドレスとして正しいことをバリデートする |
| ipv4 | フィールドがIPv4アドレスの形式として正しいことをバリデートする |
| required | フィールドが入力データに存在しており、かつ空でないことをバリデートする |
| regex | フィールドが指定された正規表現にマッチすることをバリデートする |

“` php:sample.php

// バリデーションの利用例(パイプ区切り)
$validateRules = [
// 必須入力, 英数字のみ
‘user_name’=>’required|regex:/^[0-9a-zA-Z]+$/’,

元記事を表示

PHP foreach文まとめ

# 目的

– foreach文の書き方をまとめる

# 書き方の例

– foreach文は配列や連想配列に対し、先頭のデータを使用して順にループ処理を実行する。
– 下記にforeach文の書き方を記載する。(変数`city`には任意のデータが格納されているものとする。)

“`php
foreach ($city as $キー名 => $キー名にリンクする配列に格納された値が格納される変数){
ループで実行される処理
}
“`

“`php

foreach ($city as $配列が順に格納される変数名){
ループで実行される処理
}
“`

# 具体的な書き方の例

– 連想配列`$scores`には任意のキーが設定されており、それぞれ任意の値が格納されているものとする。

“`php
//連想配列定義
$scores = array(“数学IA” => 70,
“化学A” => 90,
“世界史B” => 85
)

//ループ処理
foreach ($scores as $key =>

元記事を表示

今年できるようになったこと・来年の目標

#はじめに
Qiitaに投稿をはじめてまだ間もないですが、せっかくの年末年始なので今年できるようになったことと来年の目標を書いていこうと思います。

##簡単に自己紹介
とある会社でIT部門に配属され、2020年1月現在新卒2年目です。
大学までスポーツに明け暮れ、文系大学で心理学を専攻し、イギリス留学で英語に目覚め、なんだかんだあってプログラムを書いています。
プログラミング自体はもともと興味があり、初めてのHello world はプログラミングのオンラインスクールに通い始めた20歳の夏でした(照)
当時はhtml/css/JS/phpを基礎の基礎レベルで書いており、教材通りに書いただけで俺はなんでも作れるという謎の全能感に支配されていたのですが、入社してからボコボコにされて日々勉強に追われています。

現在は社会人としてオンライン行動データのアクセスログ計測サービスの開発に携わっております。

#今年できるようになったこと
自身が触ってみて身についたと感じるものをサービス/言語ごとに超簡単にまとめていきます。
真面目に書きます。
##AWS
AWSはかなり多くの種類のサービスを触

元記事を表示

Magentoで商品ページURLに絶対にカテゴリパスを付けない方法

Magento2系で開発をしていると、商品ページへの導線を設置しないといけないことがあります。
ところが、正直に商品データを取ってきてURLを取得すると、商品が所属するカテゴリのパスがURLについたりつかなかったりすることがあり、キレイに1つに定まらないことがあります。
もちろんMagentoではCanonical URLの設定を有効にしておくことで重複URLをGoogleから指摘されることはなくなるが、URLがブレるのはなんだかとても釈然としない思いをします。
(これはたとえ設定で商品URLにカテゴリパスを付けない設定にしていても起きます)

#普通に書くとどうなるか

何も考えずに商品データからURLを取得すると、以下のようになることが多いでしょう。
($this->productRepositoryは\Magento\Catalog\Api\ProductRepositoryInterfaceを利用するクラスにDIしている前提)

“`
$product = $this->productRepository->get($sku);
$url = $product->getPro

元記事を表示

【 Laravel 】Laravel DB.comで『 CRUD簡単作成 』を解説

#Laravle DB.com を使って 「 ER図 → CRUD生成 」を試す!
以前にも書きましたが、Laravle DB.comでは「CRUD」のコードまで生成するようになりました。\(^o^)/

###私の開発環境

– Laravel5.5/PHP7.2.1/MySQL5.6.38 (Chromeで確認)


#### メリット
– CRUDを自動生成!
– 超便利! ER図を保存できるので、1度作ったものを別のアプリにも転用しやすい!
– どのPCからでも同じデータを操作できる(ブラウザアプリだから)!

さあ、はじめて行きましょう!

###【 LaravelDB.comへ ログイン 】
[ LaravelDB.com ](https://laraveldb.com/)
Googleアカウントのみログイン可能です。
※現在はGoogleアカウントを持っていない人は少ないですからね〜
LaravelDB_com.jpgPHPの言語仕様の理解を深める特殊な立ち回り

こんにちは!

先日の年始に、
[FFmpegを使ってルパン三世タイトルジェネレーターをPHPで書いてみた](https://qiita.com/huuya/items/a4a8022e19bfe87322db)
を書いたばかりですが、今日はPHPの言語仕様を追った特殊な立ち回りについてお話します!

`この記事で扱う使用例はあくまで言語仕様の理解を深めるためのサンプルコードとして記述しています。`

## 環境

### 動作確認済環境

– macOS Catalina : “10.15.2“
– PHP : “7.3.1“

## 言語仕様の理解を深める

### 目次一覧

– [String型の文字列からfor文で1文字ずつ取得する](#string型の文字列からfor文で1文字ずつ取得する)
– [条件式の評価](#条件式の評価)
– [論理演算子の仕組み](#論理演算子の仕組み)
– [可変変数](#可変変数)
– [可変関数](#可変関数)
– [可変クラス](#可変クラス)
– [三項演算子](#三項演算子)
– [エルビス演算子・エラー制御演算子](#エルビ

元記事を表示

【デザインパターン】PHPでStrategyパターンの実装をしてみた

# 環境
– PHP 7.2.18

# はじめに
今更ながら、デザインパターンを真面目に理解し始めようとしている2年目エンジニアであります。
まずは事始めに「Strategyパターン」から勉強していこうと思い、この記事を書きました。
普通はJavaで勉強すべきだと思うのですが、Java初心者すぎるので、一番触っているPHPで勉強しています。
ちなみに、会社のブログでも同じような記事を書いたので、ここに貼っておきます。
[レガシーコードをぶっ壊す!〜基本のキ編〜](https://techblog.istyle.co.jp/archives/4475)

# Strategyパターンとは
Strategyとは、「戦略」や「作戦」という意味を持ちます。
この「戦略」や「作戦」毎にクラスを分割して、簡単にそれらを切り替えることができるのが特徴です。
共通のインターフェースを定義し、クラスを使う側(以下クライアント)はそれに伴った処理を実行するので、クライアントは具体的な実装に依存しなくなります。
strategyパターンのクラス図は以下のようなものです。

  • OTHERカテゴリの最新記事