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

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

Crostini + Laradock でChromebookのPHP開発環境をつくる

ChromebookでPHP開発環境を作ります
Chrome OSのLinux環境(Crostini)を使います
PHPフレームワークLaravelの開発をお手軽にしてくれるLaradockをインストールして動かします。
「Laradockは、Docker用の完全なPHP開発環境(公式サイトより)」

# Crostiniの基本的な環境構築

– 日本語化
– npm などのインストール
– Docker、Docker Compose のインストール

などはたくさん有益でわかりやすいな情報があるので、それぞれ参考にしてください。(参考になったサイトを下の方にまとめました)

# Laradockのインストール

[Laradock公式サイト](https://laradock.io/)
公式サイトで丁寧に解説してくれているので、この通りでインストールできます。

適当な場所にて

“`sh:ターミナル
git clone https://github.com/Laradock/laradock.git
“`

環境ファイルを作成(いったんそのまま)

“`sh:ターミナル
c

元記事を表示

EloquentModelのコンストラクタを正しく宣言するには

# はじめに

Modelのコンストラクタに必要な設定が施されていないがために、FactoryでModelを生成した際にModelの値が何も設定されていない、という現象に出くわしました。
コンストラクタ宣言時の注意点について備忘として残します。

## バージョン情報
PHP: 7.4
Laravel: 5.7 (古い。。。)
Vessel: 6.0

## 結論

先に結論を書きます。
Modelのコンストラクタを宣言する場合、親クラスのコンストラクタを呼び出す必要があります。
`parent::__construct($attributes)` で親クラスのコンストラクタを実行することで、Modelの初期化に必要な処理が実行されます。
↓の継承元の親クラス(Modelクラス)のコンストラクタを見てみると、いくつかの処理を実行することで初期化をしていることがわかります。
`parent::__construct($attributes)` を実行しないことで、HogeModelは知らぬ間にコンストラクタをオーバーライドしてしまっていたようです。

“` Hoge.php

元記事を表示

PHP exec , execute 違い

#プリペアドステートメント使えるかどうか
参考:

【PHP】exec(), query(), prepare()の違い


https://www.php.net/manual/ja/function.exec.php
https://www.php.net/manual/ja/pdostatement.execute.php

###exec
一方的なINSERT, DELETEで使える

###execute
SELECTは必ずこっち

元記事を表示

PHP 標準入力の方法

#標準入力の方法

1行の場合

“`php

$one = trim(fgets(STDIN));
var_dump($one);
“`

複数行の場合

“`php


string(2) “60”
[1]=>
string(2) “90”
}
*/
“`

trim()で囲っているのは余分な改行や余白をなくす為にしようしている(必ず必要なものではない)

元記事を表示

Laravelアプリでログイン後、直前のページに遷移したい

# Laravelでログイン後、直前のページに遷移したい

#目次
[1.デフォルトはHome画面](#1-デフォルトはhome画面)
[2.トレイトのAuthenticatesUsers.phpを見てみる](#2-トレイトのauthenticatesusersphpを見てみる)
[3.instended解析](#3-instended解析)
[4.今回やりたいこと](#4-今回やりたいこと)
[5.実装](#5-実装)
[6.レジスターも同じようにしたい](#6-レジスターも同じようにしたい)
[7.まとめ](#7-まとめ)

ロールごととか1箇所に指定するのはやったことありますが、動的に変化させるにはどうしたらいいかわからず調べたことをまとめます。

ログイン後のページ遷移をデフォルトのHOMEや設定したページだけでなく、例えばカート機能でいざ決済する時にログインを促したりした場合、ログイン後は「そのページに戻ってきたい場合」などありますよね。

※Laravel7で動作確認
※参考記事
[【Laravel】ログインした後、固定ページに飛ばさずにログインボタンを押した画面に戻

元記事を表示

Laravel ローカル開発環境を構築( Laradock 編)

# 今回作成する環境構成

|名前 |バージョン|
|– |–|
|PHP |7.3.27|
|Laravel |8.32.1|
|Laradock |v11.0 (2020/06/18)|

* VSCode のプラグイン
* PHP Debug
* PHP IntelliSense

![laradock.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59081/c693ace2-0f5b-79a8-e3aa-d3c1ebe587a3.png)

# まずは Web サーバーを準備

ここで登場するのが `Laradock` です。公式には以下のように記載があります。
> Laradockは、Docker用の完全なPHP開発環境です。
> さまざまな一般的なサービスをサポートし、すべてがすぐに使用できるPHP開発環境を提供するように事前構成されています。

本当に[いろいろなコンテナ](https://laradock.io/introduction/#s

元記事を表示

PHPをherokuでデプロイする!(4)Composerのインストールとデプロイの実行

#はじめに
PHPをherokuでデプロイする方法、前回まででデータベースを整えたので、今回はいよいよデプロイするために最終準備にうつっていきます!

#Composerのインストール
デプロイするための最後の準備として、Composerのインストールが必要となります。このComposerというのはPHPのパッケージ管理を行うツールであり、フレームワークを利用せずにPHPのみで作成している場合には、デプロイするために必要なソフトウェアが入っているため、新たにインストールする必要があります。

それではインストールの方法について説明します。ターミナルでデプロイしたいアプリのディレクトリにアクセスしましょう。
そして以下のように入力しましょう。

“`
$ touch composer.json
“`

このように入力すると、composer.jsonのファイルが作成されます。もちろん、composer.jsonというファイルを直接デプロイしたいアプリのディレクトリ内に作成しても構いません。その後エディタでcomposer.jsonを開きましょう。

“`
{
“requir

元記事を表示

Laravel+Guzzleを使用してAPIトークンを取得する方法

こんにちは、くりぱんです。

## この記事で実現できること
– Guzzleのインストール
– Laravel+GuzzleでAPIトークンの取得

## 説明
今回はPHPのHTTPクライアントであるGuzzleを使用して、とあるAPIのトークンを取得していきたいと思います。

## 開発環境
– Laravel: 6.2
– Guzzule: 7.2

## 実装の流れ
1. Laravelプロジェクトの作成
1. Guzzleのインストール
1. 日本時間にする
1. データベース設定
1. Route
1. Controller
1. View

## 実装
### 1. Laravelのプロジェクトの作成

“`bash
$ composer create-project –prefer-dist laravel/laravel testAPI “6.*”
“`
`testAPI`というLaravel6のプロジェクトが作成されます。

### 2. Guzzleのインストール

“`bash
$ composer require guzzlehttp/guzzle

元記事を表示

PHP/MySQLで作ったポートフォリオの振り返り

#初めに
開発環境はmacOSで
PHPのバージョンは7.3を使用しています。
あくまで、アウトプットを目的として書いた記事なので、理解しにくい点、間違った内容があるかもしれません。ご容赦ください。

##ポートフォリオについて
名前は『BookList』というアプリで、本のECサイトという設定で開発しました。
ECサイトは、CRUD機能だけでなく、より便利に理想的なものを作ろうとすると、
たくさんの機能が追加でき、すでに世の中にお手本となるフリマサイト、ECサイトがたくさんあるので自分もECサイトの開発に挑戦してみたいと思いました。

##アプリの機能一覧

|No|機能|機能について|
|:—:|:—:|:–:|
|1|新規登録機能||
|2|ログイン機能||
|3|ゲストログイン機能|新規登録しなくても、予め用意されているユーザー|
|4|パスワードのハッシュ化|[この機能は記事にまとめました](https://qiita.com/tom111/items/e2c4b7572814f921dddb)|
|5|商品の出品機能|商品の状態、種類、画像、タイトル、値段、著者

元記事を表示

【未経験者】PHPとLaravelそれぞれで類似ポートフォリオ作ってみた

# はじめに
こんにちは、おーもとと申します。エンジニアに転職をするため学習している初学者です。
私は車が好きで、「近年の若者の車離れ」という問題にフォーカスしたアプリを制作しようと思いました。
色々あって、生のPHPとLaravelの二通りの類似ポートフォリオを制作したので、記事にしてみました。
# 制作背景
若者が車を持たない理由には様々な理由があると思いますが、
「欲しいと思えるほど魅力を感じる車に出会っていないからなのでは?」
と思い、
・かわいいやかっこいいというスタイル
・大きさ
・国産か外車か
・アウトドアや街乗りという用途
これらの項目に当てはまる車を、結果として表示するアプリを制作することにしました。
(これらの特徴は全て私が定めているため、投票などにより特徴を決める機能をつけたいです)

# 11月 PHPでアプリ開発
10月からPHPの学習を始めていたので、そのアプリはPHPで制作しました。
カーセンサーAPIを使用して、車の情報を取得します。
解説動画:https://www.youtube.com/watch?v=ZXbgUtjxKM8
![スクリーンショット

元記事を表示

Docker,PHP,MySQLで構築した環境におけるDBホスト名の調べ方

以下の記事を参考に、Docker,PHP,MySQLの開発環境を構築した。

[PHP]DockerでPHP, MySQL(MariaDB), nginxを使ったローカル開発環境を構築する

記事の手順にしたがって開発環境は構築できたのだが、mysqliでDBに接続する際に、ホスト名が分からない事態に遭遇。
ホスト名は、DBに接続して以下のコマンドを入力する事で確認できる。

“`mysql> show variables like ‘hostname’;
“`

今回はDocker環境なので、DBコンテナに入ってから上記コマンドを入力する必要がある。
入力するコマンドは以下の通り。

“`
// DBコンテナに接続
docker-compose exec db bash

// DBに接続
root@2918fd6815ab:/# mysql -u root -p
→ パスワードを入力

// ホスト名を表示
mysql> show variables like ‘hostname’;
“`

以上のコマンドで、ホスト名を確認できる。

元記事を表示

【PHP8.1】PHPで簡単に非同期処理を書けるようになる

PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。

しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。
この用途には[Guzzle](https://github.com/guzzle/guzzle)というライブラリが存在し、これを使えば同時にリクエストを投げられます。
しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は?
時間のかかる計算を裏でやりたい場合は?
などと考え始めると、こういった個別のライブラリでは対処しきれません。

ということで汎用的な非同期処理を[PHPで書けるようにするRFC](https://wiki.php.net/rfc/fibers)が提出されました。

# PHP RFC: Fibers

## Introduction

人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。
同期的に実行されるコードのみが存在し、そしてそれを同期的に呼び出します。
同期関数は、関

元記事を表示

【JavaScript】axiosでCSVを受け取りブラウザでファイルダウンロードに移行させる方法。

# 前提
サーバーサイドはLaravel、フロントはVue.jsです。
今回はJavaScriptの話がメインなのでPHPやLaravelが分からない方でも支障なく読んでいただけると思います。

# やりたかったこと
ユーザー目線:ブラウザに表示されているダウンロードボタンをクリックすると、CSVファイルをダウンロードできる。

僕目線:LaravelでCSVを吐き出すAPIを用意し、axiosを使ってAPIを叩きCSVをダウンロードできるようにする。
#起こった問題
ブラウザの検索タブでエンドポイントに直接アクセスするとうまくダウンロードできるが、axiosを使ってエンドポイントにアクセスするとダウンロードできない。(CSVの内容はデータとして返ってくるが、ブラウザがダウンロード画面に移行しない。)
# 失敗した方法
CSVを返すAPIを単純に叩いてダウンロードできると思ったのですが、うまくいきませんでした。
※関係ない部分は色々省略してます。

“`Javascript:sample.js
downloadCsv() {
axios
.get(“/api/

元記事を表示

安易にPHPのバージョンを上げたら色々ハマった(imagick編)

Qiitaに記事を書くのがこれが初めてです。

今まではハマった事、解決方法などは色々と手元のノートに書いて記録してきました。しかしそれに限界を感じ、また自分のようにハマった人がいるんだったら、その人たちへの手助けになるかと思い書き始めようと思いました。

さて、今回のお題目はタイトルの通り。
安易にPHPのバージョンを上げたら色々ハマった(imagick編)

このたびWordPressの勉強をする必要が出てきたので、apacheのhttpd-vhosts.confを弄ってAliasでディレクトリを分けて、その中にWordPress5.6のファイル展開して突っ込む。
XAMPPでずっと開発してきて、別件のプログラムでMySQLも使っていた為、データベース系の設定もちょちょっと書いたらあっさりとHelloWorldの画面が出てきて拍子抜けした。

なんか、自分が現役だった頃と全然違う…。簡単すぎ…。(10年も経てばそりゃ変わる)

WordPressの設定画面を色々と弄り倒していたところ、サイトヘルスという場所に行きついた。
どれだけ自分の環境が安全であるかを教えてくれるらしい。

元記事を表示

Fizz Buzzに対抗して世界のナベアツプログラムを紹介します。

ヨーロッパで「Fizz Buzz」という多人数で1から順に数を数えて
・3の倍数を「Fizz」
・5の倍数を「Buzz」
・3でも5でも割り切れる数は「Fizz Buzz」
・それ以外は数字
を言うゲームがあります。世界のナベアツで有名な桂三度さんの
「3の倍数、3が付く数字を言うとアホになる」
というプログラムを書きました。JavaとPHPで1~50までのプログラムです。

Java

//世界の「ナベアツ」ゲーム
//1から50までのを対象に、
// 3の倍数、数字に3がつくと、アホになる
//
//
// 新規作成日 2021/3/15
// Author 乃木坂好きのITエンジニア

package paiza;

public class Sekainonabeatu {
 public static void main(String[] args) {
  for(int i=1;i<=50;i++) { if ((i % 3 ==0) ||( i/10 == 3) || (i%10 == 3)) {

元記事を表示

【PHP入門】PHPの文字列について

## はじめに

こちらは、[PHP5上級試験/準上級試験まとめ](https://qiita.com/chimayu/items/36d6152134464856ac0d) の一環として、PHPの**文字列**について順を追って解説した記事です。
試験対象はPHP5ですが、PHP7くらいまでなら対応できるよう、汎用的な内容を心がけています。内容に間違いがある場合はご指摘ください。
なお2021年秋には [PHP8技術者認定上級試験](https://www.phpexam.jp/2020/12/11/php8/) が始まる予定ですので、最新情報は公式ページよりご確認ください。

## 文字列とは
文字列とは、文字通り(?)文字で構成された値のことですが、PHPで文字列を表現するには “`’シングルクォート(引用符)’“` や “`”ダブルクォート(二重引用符)”“` で文字を囲う必要があります。
例えば “`1“` とだけ書かれた値は**数値**の1を表し、“`’1’“` や “`”1″“` と書かれた値は**文字列**としての1を表します。
(ヒアドキュメントや

元記事を表示

PHPでQRコードを作ってみた

今回は動的にサイトのURLを作成したかったので、PHPでQRコードを作成したみました。

結論から言いますと、全く難しくないです!!

読み取りもしっかりと行えます!

なので、肩の力を抜いてご覧ください。

それでは説明していきます!

まずはQRコードを作成するためのライブラリをダウンロードしてください。

“`
compose require endroid/qr-code
“`

後は下記の記述を参考にQRコードを作成します。

今回はコントローラーでQRコードを作成します。

“`

元記事を表示

【個人開発】作ったサイトがクソつまらないのでアドバイスをください

http://18kipper.net/

入力された金額を青春18きっぷ何回分かに変換するサイトです。
初めてプログラミング(PHP)を学習し、作ってみました。

#なんでつくったか
僕自身、鉄道旅行が好きですがお金がないので行きつくのは青春18きっぷ。
そんな旅行を繰り返していると、何かものを買おうとするときに
**「青春18きっぷ○○回分だから~まで旅行できるな」**と考えてしまいます。
そんな18きっぱーの脳内を表現しようと思い、このサイトをつくりました。

#アドバイスをください
数字を入力して青春18きっぷ何回分かを表示するだけというのはとてもつまらないし、使ってもらえない。
具体的な使用用途、利用場面がないというのが一番の問題だと思っています。
ですが、具体的にこんな機能があればというのがわかりません...

こんな機能があったらどうだろう?
こんなサイトのデザインがいいんじゃない?
などいろいろなアドバイスをコメントで頂けたら嬉しいです。

元記事を表示

Phalcon4にバージョンアップしたあとにDBの更新系が動かなくなったら

過去にPhalcon4にバージョンアップしたときにModel周りの更新がうまく行かなくなったことがありました。
この問題に当たってから時間が経ってしまったので実際の動作を忘れてしまいましたがこの辺気にすると良いよ程度で書いておきます。

# 概要

Phalconを4にバージョンアップした。
参照系は動くけど、更新がなんかされない。saveメソッドはtrueが返ってくる。

# 対応1 – ModelのkeepSnapshotsまたはuseDynamicUpdateを有効にする。

Phalcon3系まではModelのデータを取得したあとに何かデータが更新されれば、過去のデータと照らし合わせて更新されるような形が取られてました。

しかし4系からはkeepSnapshotsというオプションを有効にしないと過去のスナップショットが保持されず、更新がされません。

“`php
class User extends Model
{
public function initialize()
{
$this->keepSnapshots(true);
}

元記事を表示

PHPのPDOでMySQLに接続する

#環境
・macOS BigSur (11.2.2)
・PHP (7.4.12)
・MAMP (6.3)
・MySQL (5.7.32)

#前提条件
・MAMPのphpMyAdminでデータベース・テーブルを作成してあること
・データベースに接続するためのユーザーを作成してあること

#PDOとは
・PHPからMySQLに接続するために必要なオブジェクトのこと
※PDOクラスのインスタンスを生成することにより、データベースサーバーとの接続が確率される

#DB接続手順
“`
//事前準備
$dsn = ‘mysql:host=localhost;dbname=データベース名;charset=utf8’;
$user = ‘ユーザー名’;
$pass = ‘パスワード’;
“`

変数に対象の「データベース情報」「DB接続するユーザー情報」を設定

“`
//DB接続
$dbh = new PDO($dsn,$user,$pass);
“`
設定した変数を引数に入れて、PDOのオブジェクト生成

#データを取得する
指定した列名のデータを全て取り出す例

※上記で生成したPDO

元記事を表示

OTHERカテゴリの最新記事