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

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

計算でじゃんけん

[[PHP]じゃんけんプログラム](https://qiita.com/ri_/items/5c73dca33cc8401c2600)と、[if文なしでじゃんけん](https://qiita.com/tadsan/items/65d91ba6b50535fc8815)を読んで自分でもやってみた。

まずは、じゃんけんの勝敗を表にする。
9パターンしかないので、そこに数値を入れると下のようになります。

| | グー(0) | パー(1) | チョキ(2) |
|:-:|:-:|:-:|:-:|
| グー(0) | あいこ(0) | 負け(2) | 勝ち(1) |
| パー(1) | 勝ち(1) | あいこ(0) | 負け(2) |
| チョキ(2) | 負け(2) | 勝ち(1) | あいこ(0) |

縦軸を`$player_hand`、横軸を`$pc_hand`とすると、計算方法は下の通りです。

“`php
$result = ($player_hand – $pc_hand + 3) % 3;
“`

~~これを邪悪な三項演算子に放り込む。~~

元記事を表示

【備忘録】写真のアップロード方法

最近、エラーが埋まってる埋まってないで考えると楽になるのかなと感じる

HTMLにて

これをすることにより、ファイルから選ぶことができる

“`PHP:join.php
input type=”file”
“`

PHPにて

理解はしていない…
上のPHPで名前(?)を決める

“`PHP:join.php
$fileName = $_FILES[‘image’][‘name’];
if(!empty($fileName)) {
$ext = substr($fileName, -3);
//写真のタイプを選定し、エラーを作る//
if($ext != ‘jpg’ && $ext !=’gif’) {
$error[‘image’] = ‘type’;
}
}
“`

PHPにて

上の2行でフォルダ内にアップロードできるようになる

“`PHP:join.php

if(empty($error) ) {
//写真のアップロードの決まり文句らしい//
$image = date(‘YmdHis’

元記事を表示

php require とrequire_oneceの違い , includeとの違い, パスの指定方法についてなど

#includeとrequireの違いやパス指定のまとめ

###違いについて
####再読み込みを同じファイル内で行われた際の挙動が違う

参考:https://qiita.com/awesam86/items/3fa28e23c95ca74caddc

####試してみた(index.phpでr.php, rone.phpを読み込み検証)

r.php

“`php

元記事を表示

if文なしでじゃんけん

[[PHP]じゃんけんプログラム – Qiita](https://qiita.com/ri_/items/5c73dca33cc8401c2600)を読んで、自分ならどうするか考えてみた。

## 解答

複雑に考えればいくらでも複雑にできるけれども、とりあえずこのくらいにした。

“`php
[‘チョキ’ => 1, ‘パー’ => -1],
‘チョキ’ => [‘パー’ => 1, ‘グー’ => -1],
‘パー’ => [‘グー’ => 1, ‘チョキ’ => -1],
];

$printer = fn(string $my_hand, string $your_hand, int $result): string =>
sprintf(“[%s vs %s] %s”, $my_hand, $your_hand,
match ($result) {
-1 => ‘あなたの負け’,
0 => ‘あいこ

元記事を表示

eccube4のテーブル拡張、管理画面

#はじめまして
qiitaの投稿をはじめました。普段は関西のweb系の会社でインターンをしています。phpとjqueryを中心にバックエンド開発をしており、laravel, wordpress, eccubeを使って開発をしています。今日はeccubeのデータベースを拡張して商品やカテゴリの内容を追加(例えば各商品にpdfファイルを追加したいとか)にはどうすればよいかを書いていきたいと思います。最近けっこうeccube4をさわっているので当分それ系の記事が多くなるかもしてませんね。また、自分自身の備忘録もかねています。

#テーブルの拡張
eccube4 はご存知の方もおおいと思いますが、symfonyが使われていますので、symfonyに則ってやることを考えるのが一番いいと思います。

###traitを作成する
たとえば、Eccube/Entity/Product.php(dtb_product テーブル)を拡張したいとき、基本的には /app/Customize/Entityの配下にProductTrait.phpファイルを作成し、そこに追加したい項目を書くのがよいでしょう。

元記事を表示

[PHP]じゃんけんプログラム

未経験でシステムエンジニアとして新卒入社し、もうすぐ1年です。
が、エンジニアとして成長できているか不安だったのでこれから少しずつ勉強し
このQiitaにアウトプットしていきます。

[PHP]じゃんけんプログラム

ロジック部分

“`php

元記事を表示

【Laravel】php artisan db:seedが通らない時の対処

## 環境
PHP 7.3.8
Laravel 6.20.16
Docker 19.03.8

## Target class […] does not exist.というエラー
Docker環境でlaravelクイズアプリを作成中、
サンプルで問題とカテゴリーデータをシーダーでデータベースに入れようとした時に怒られた話。

“`
php artisan db:seed
“`
上記コマンドを実行した際に下記エラーが発生。

“`
Illuminate\Contracts\Container\BindingResolutionException : Target class [CategoryTableSeeder] does not exist.

at /var/www/html/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:805
801|
802| try {
803| $reflector = new

元記事を表示

プログラミングを始める前に…

#はじめに
この記事は「なんとなくプログラミングに興味はあるけど、実際勉強したらどのようなことができるようになるのかなどが分からない」という方に向けた記事となっています。
学習する言語によって出来ることは様々ですが、私が今回説明するのは**Web系**をメインに記事を投稿していこうと思います。

#目次
1.プログラミングを学ぶことによって出来ること
2.Web系のプログラミングとは
3.Webアプリケーションの仕組み
4.静的と動的の違い
5.フロントエンドとバックエンドの違い

#1.プログラミングを学ぶことによって出来ること
早速本題に入っていきますが、
『プログラミングを学習したらどのようなことができるようになるのか』
をざっくり説明していこうと思います。

– Webサイトの作成
– Webアプリケーションの開発
– スマホのアプリ開発
– デスクトップアプリの開発
– ゲームソフトの制作
– ドローンの制御
– 株価予測(機械学習)
– 新規通貨の発行(仮想通貨)

今上げたのはほんの一例に過ぎず他にも様々なことができるようになります!
プログラミング言語によって出来ること

元記事を表示

スプレッドシートアプリを利用したデータベース編集を簡単実現

#はじめに
エキサイト株式会社(XTechグループ)エンジニア[masatomur](https://note.com/masatomur)?です。
先日、企画側からこんな要求がありました。
>_データベースって要はエクセルの表がいっぱい集まったようなものですよね?会員名簿の表なんかはエクセルの画面みたいに自由に編集したいんだけどできます?_

時間が許す限りデータベースとエクセルとの違いをとくとくと説教したいところでしたが、

– 万が一他のテーブルとのリレーショナルに問題が生じてもさほどクリティカルではないテーブルだったらまあいいかな
– データ管理も運用側に任せてしまえばこちらも楽かな

ということで、つくってみることにしました。(Oracleクライアントなんて使わせられませんから)
このような裏方のツールにはあまり手間をかけたくないし、webでデータ編集画面てすごくつくりたくないので、

1. **会員名簿テーブルのレコードをcsvファイルとしてダウンロード**
2. **Numbersで開いて編集〜csvファイルとして書出し**
3. **csvファイルをアップロードし会員名

元記事を表示

PHP5上級試験/準上級試験の上級合格に挑戦(8) 5章配列中編

# 5章配列
+ 5章配列で要注意なところは、前編でもやった配列のイレギュラーな作り方、覚えなくてはならない配列に関する多数の関数、並べ替え処理。
+ 配列に関わる多数の関数は、多いだけではなく、複雑な処理をするハードな関数もある
+ 今回はその配列に関わる多数の関数についてほぼ全部ドリル形式で

## 要素作成・要素数取得

(1) 連続する整数、または文字列を値とする配列を作成する関数は?
(2) 配列の要素数を数える関数が2つあるがそれは?
(3) 配列に値を継ぎ足す関数は? 
(4) (1)を使って 1〜5,a~eと、それぞれ連続する整数と文字列を持つ配列$a,$bを作成するコードを記述せよ
(5) (4)を(2)を使って数えて正常に処理がされるか確かめよ(1つめの関数は数字配列に、2つめは文字列配列に)
(6) (4)で作った$aに「-」を継ぎ足して全体で要素数が10個になるようにせよ
 
 
 
 
以下解答
 
 
(1) range()
(2) count() , sizeof()
(3) array_pad()

“`index.php
//(4)
$a = ran

元記事を表示

LaravelをコンテナにしてLambdaでデプロイするのが超簡単になった2021年

[昨年同じ記事](https://qiita.com/umihico/items/64fcf159f68ebd866170)を書きましたが、完全に過去の遺物と化しており、現在の手順はまるで違います。LaravelをコンテナにしてLambdaにデプロイする記事は見つからないので、書きました。

デモサイトとgithubは以下です。
https://w0qw04g8sj.execute-api.ap-northeast-1.amazonaws.com/
https://github.com/umihico/laravel-lambda-docker-bref

### curlでプロジェクトが作成できる

パスが動的に設定可能で、そのままアプリ名となります。この場合`larademo`というフォルダが作成され、配下に展開されます。

“`bash
curl -s https://laravel.build/larademo | bash
“`

### docker-composeがデフォルトでパッケージされている。

即座にコンテナ内でcomposer, phpコマンドを使わせてくれ

元記事を表示

エラーチェック備忘録

条件

ログイン画面作成時

DBを作り終えた後、HTMLを構成させ、
このページにエラーがなかったら次に進めるという認識

値が空だった場合

POSTの値が空だった場合の関数を作成
blankの値をつける

“`PHP:join.php
if($_POST[‘name’] === ”) {$error[‘name’] = ‘blank’;}
“`

HTMLに記述

“`PHP:join.php
if ($error[‘name’] === ‘blank’):
/ここにエラーメッセージ/
endif;
“`

正しい値がほかの間違いで消されないように

“`PHP:join.php
value=”
“`

値の文字数が少ないとき

lengthとつけて上と同じようにHTMLに挿入

“`PHP:join.php
if(strlen ($_POST[‘passwo

元記事を表示

php パスワード まとめ

phpでパスワードを暗号化する場合使用すべきなのは、`password_hash()`
– password_hash()
強固な一方通行ハッシュアルゴリズムを用いて、新しいhashを生成する。
crypt()と互換性があってcrypt()が作ったhashはpassword_hash()でも使用可能らしい。
password_hash()はcrypt()のシンプルなラッパーであり、既存のパスワードハッシュと互換性があります。
password_hash() は、ソルトを指定しなかった場合にはランダムなソルトを作りますので
一般に、これがいちばんお手軽で安全なアプローチです。
`および PHP 7.0.0 以降でソルト・オプションは非推奨になりました。`らしい。

ここでは、password_hash()を使用することを推奨する。

– crypt()
文字列のhashを作成
salt(ソルト)オプションを使用しないと安全ではない。結果として、暗号化する際にはpassword_hash()を推奨。

ソルトとは?
暗号理論におけるソルトとは、ハッシュ処理の際に追加するデータのこと。
事前

元記事を表示

2バイト言語で作れるメールアドレス、もじアドレス

もじアドレスとは、どんなWebサービスですか?

2バイト文字、つまり日本語の文字だけをアドレスにしてメールを送れるサービスです。もっと分かりやすく言うと、コンタクトフォーム自体を任意の文字で検索できるようにした感じです。実質日本語、漢字だけのメールアドレスを持てるような雰囲気になります。twitter質問箱のリアル版というか、ペイパルやホワットスリーワーズにインスパイアされて作りました。

そもそもこの もじアドレス というのはなんの役に立つのですか?

行政とか民間の企業は、個人と音声通話のみでコンタクトをとろうとすることが多いと思います。連絡したい相手の携帯番号を知っているのであれば、簡単なショートメールの1つや2つくれればいいのにな。と思う反面、それをやろうとするとスマホ&スマホの二台間でのやりとりが必要になってくる為、個人対組織では難しいですよね。

人の名前だけでテキストが伝達できれば、色々と社会がもう少しスムーズに

元記事を表示

cliとphp-fpmでPHPのバージョンが異なるときのcomposer require方法

# TL;DR
php-fpmで使用されてるのと同じPHPバージョンを使用して`php composer.phar require`を実行する。

“`bash
$ php7.2 composer.phar require abraham/twitteroauth
“`

#環境説明
今回の環境では、cliはPHP8.0が使用されていて、

“`bash
$ php –version
PHP 8.0.2 (cli) (built: Feb 14 2021 14:21:15) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.2, Copyright (c) Zend Technologies
with Zend OPcache v8.0.2, Copyright (c), by Zend Technologies
“`

php-fpmではPHP7.2が使用されていた
![スクリーンショット 2021-02-23 11.03.16.png](https://qiita-image-store.s3.ap-nort

元記事を表示

【PHP】PHPでメソッドチェーンを実装する

# はじめに
Laravelとかクエリビルダを使っていると、以下ようなのコードをよく見かけると思います。

“`php
$user = DB::table(‘users’)
->where(‘name’, ‘John’)
->first();
“`

こちらのコード、大変読みやすくないですか??
“users“テーブルの“name“が“John“のレコードの1つを所得するというのが、直感で理解できます。
「呼び出し元が見やすいことコードを書くように心がけたい。」そう感じている、Webエンジニア2年生なのです。

# メソッドチェーン
今日は、“->“を使ってメソッドチェーンを実装しようというお話です。

“`php:Calculator.php
class Calculator {

private $result;

public static function create(int $int): Calculator {
return new Calculator($int);

元記事を表示

Guzzle最初の一歩

ただのメモ。最初の最初の一歩を踏み出す

“`php:GuzzleUtil.php
client = new Client([‘base_uri’ => ‘http://httpbin.org’,’timeout’ => 2.0,]);
}

public function retrieveGetResponse(): ResponseInterface
{
return $this->client->get(‘/get’);
}

public function getRespo

元記事を表示

TwitterのAPIで高知県の情報を取得してみた。

###TwitterのAPIで高知県の情報を取得してみた。
#####条件として
・高知県というワードがあるつぶやき。
・いいね、RTが10件以上、ポチられているツイートを拾う。

#####使用したライブラリ
TwitterOAuth

#####phpバージョン
php7.4.x

#####一言
このままの状態ではとても精度の良い高知県の情報を収集することは出来ない!
ので、工夫が必要です。

“`php:common/Twitter_config.php

元記事を表示

【コピペ】Docker ComposeでLaravel開発環境を構築その伍

前回、.envから環境変数を使えるようにして、かなり快適になった。
[【コピペ】Docker ComposeでLaravel開発環境を構築その肆](https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f)

だが、実際にこの環境を使って開発してみると色々と不便だったので修正する。

# マシンスペック
* Mac mini 2018
* macOS Catalina(10.15.x)
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB

# Docker環境
* Nginx 最新版
* PHP(PHP-FPM) 7.4.x
* MySQL 8.x
* Composer 2.x
* Laravel 8.x
* Redis 最新版
* MailHog 最新版

# やること
* 不便なところを改修

# 補足
各環境を行ったり来たりするので、下記のように記載します。

“`
[Mac]$ MacのターミナルでMac内の作業
[PHP]$ MacのターミナルからPHPコンテナに接続して作業

元記事を表示

テーブルの作成 CREATE TABLE文

データベースの作成、テーブルの作成や登録は、SQLを使用してMySQLに命令する。

★テーブルの作成
※なお、ファイルからテーブル作成を行う方法もありファイルから実行できると何度も同じSQL文を毎回自動で実行できる。

CREATE TABLE文で行う。
テーブル名、列名。データ型、制約、テーブルオプションなどを記入。

“`
CREATE TABLE book_logs(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
author VARCHAR(100),
status VARCHAR(10),
score INTEGER,
impressions VARCHAR(1500),
save_day TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) DEFAULT CHARACTER SET=utf8mb4;
“`

★テーブルの削除
DROP TABLE テーブル名;

★MySQLコマ

元記事を表示

OTHERカテゴリの最新記事