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

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

エルビス演算子(三項演算子の省略記法)とNull合体演算子(PHP7以降で追加)の違い

# エルビス演算子とNull合体演算子の違い

エルビス演算子は、条件値が`falseとみなされる値`の場合、後者の値が式の結果となります。
Null演算子は、条件値が`null`の場合、後者の値が式の結果となります。

“`php
$v1 = ”;
$v2 = null;

$v1 ?: false; // false
$v1 ?? false; // “”
$v2 ?: false; // false
$v2 ?? false; // false
“`

# falseとみなされる値(php.netより)
> boolean に変換する場合、次の値は FALSE とみなされます。
>
> – boolean の FALSE
> – integer の 0 および -0 (ゼロ)
> – float の 0.0 および -0.0 (ゼロ)
> – 空の文字列、 および文字列の “0”
> – 要素の数がゼロである 配列
> – 特別な値 NULL (値がセットされていない変数を含む)
> – 空のタグから作成された SimpleXML オブジェクト

> 警告: -1 は、他

元記事を表示

プログラミングをかじったからには何らかの制作物を作りたい#4 ~Laravel, ページ作成, ルーティング

# 説明
このエントリーは初心者がとりあえず何かを作りたいと考え、それのみを理由にして記述しているものの4です。そのため、技術的な誤りや勘違いが多分に含まれている可能性があります。ご了承くださいませ。もしよろしければご指摘やご教示を頂けましたら幸いです。
## できたもの
https://www.mend0.top

# 前回のあらすじ
__プログラミングをかじったからには何らかの制作物を作りたい#3 ~作り直し編、完成したもの~__
https://qiita.com/tatsuki1112/items/5bbffaa9da8f7727f7c5

実際に作成したものはできていて、それがどんなものなのかを説明した。

#Laravel編
今回はLaravelでページを作成し、ルーティングなども行いました。
開発環境のMac上にDockerでLaravelを扱えるようにしました。

## ページ作成 ~blade~
Laravelではviewにbladeというテンプレートが使用できます。Bladeを使うと、その中にPHPを記載できたり、テンプレートを継承したり、分割して記述したりなどが

元記事を表示

わりかし簡単なLAMP開発環境構築方法

##やぁ。##
皆様、こう思ったことはありませんでしょうか?

**【コーディング以前に、環境構築がドチャクソめんどくせぇ】**

私はときどき、しょっちゅう、頻繁に、よくあります。

> ・できるだけ、端末の環境は汚したくない
>
> ・つまり、XAMPPは使いたくない
>
> ・でも、OSがWindows HomeなのでDockerは使えない
>
> ・「SSH接続してからhttpd.confをvimで編集して~…」とか言われると、モチベをデストロイされる

要するに

**「仮想環境を使って開発したいけど、Apacheとかのインストールをするのは面倒くさそうだからやりたくねぇ」**
そんな状態であるわけです。

『いや、やれよ』って言われたらぐうの音も出ないどころか平土下座するしかありませんが、

めんどいものはめんどい。

誰がなんと言おうが、めんどいものはめんどいし、毎朝陽は昇るし、もう30歳を超えたというのに新垣結衣は可愛いし、引退して10年以上経ったけども立花里子のAVを未だに私は観ているのである。

##めんどいので、簡単に済む方法を調べてみた##
1. 仮想環境

元記事を表示

PHP 定数

# 目的

– 定数の定義方法をまとめる

# 書き方の例

– 定数は書き換えられない。
– 定数の出力時は定数名の前に`$`はつけない。
– 下記に定数の定義方法をまとめる。

“`php
//定数の定義
define(“定数名(大文字)”, “定数に書くのする不動の値”);

//定数の出力
echo 定数名;
“`

# 特殊な定数

– 下記にこーどを書く際に定義せずともすでに最初から定義されている定数を紹介する。

“`php
//現在の行数を出力する定数
var_dump(__LINE__);

//実行されているファイル名を出力する定数
var_dump(__FILE__);

//実行されているファイルが存在するディレクトリを出力する定数
var_dump(__DIR__);

“`

元記事を表示

PHPでURL正規表現

#PHPでURL正規表現

## プロトコル + ドメイン
“`php
$urls = [
‘a’ => ‘http://localhost:81/test.php?test_param=johi’,
‘b’ => ‘http://localhost:81’,
‘c’ => ‘http://localhost’,
‘d’ => ‘http://localhost:8080’,
‘e’ => ‘http://www.xn--e–testjoidiu.jp/’,
‘f’ => ‘http://egegbfwork.blagebog10f2.fc2.com/’,
‘g’ => ‘http://blogs.yahoo.co.jp/medidgecalg919e’,
‘h’ => ‘http://227ebdw.net/kango/1/index.html’,
‘i’ => ‘http://gebfa.test-search.net’,
];
foreach ($urls as $url) {
$result = preg_match(‘/(https

元記事を表示

PHPでWebアプリを作ったのでまとめました

#はじめに
初投稿になります。
プログラミング学習のアウトプット(ポートフォリオ)として、PHPでのWebアプリを制作しました。

制作したWebアプリの概要や機能をユーザーや採用担当者に知ってもらう為、どのような経緯で制作を行ったのか、どのように開発をしたのかをまとめました。

###この記事を書いた目的
制作したWebサービスの機能、構成を伝えるため。

###ポートフォリオで目指したもの
– フルスクラッチでのPHPを利用したWebアプリ制作を行う
– CRUD処理を利用する
– 主にスマートフォンユーザーが使用することを意識したUI/UX作り(PC・スマホ対応)
– CSS設計を意識する(BEMを使用)
– WebAPIの活用をする(Google Map APIを使用)
– インフラにはAWSを活用する(EC2・RDS)

##開発環境
###使用言語・データベース・インフラ
– PHP 7.3.11
– Javascript
– CSS
– MySQL
– AWS(VPC、EC2、RDS)

###使用ツール・ライブラリ
– jQuery
– SASS
– Ajax
– Gi

元記事を表示

【PHP8.0】マイナススタートの配列インデックスが使えるようになる

“`php:PHP7.4
$arr = [];
$arr[-10] = 1;

$arr[] = 1;
“`

どうなるかというと`[-10=>1, 0=>1]`です。

これは[マニュアル](https://www.php.net/manual/ja/language.types.array.php)にも明記されています。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/4690c36b-844f-c90f-dd10-718a249e94e8.png)

しかしこの動作はPHP8.0で変更になります。
[Arrays starting with a negative index](https://wiki.php.net/rfc/negative_array_index)というRFCにおいて変更が決定しました。

# Arrays starting with a negative index

## Introduction

[array_fillのドキュメント](h

元記事を表示

PHPセッション

# セッションとは
– サーバ側に一時的にデータを保存する仕組み

# セッションの保持方法
ブラウザがセッションを維持する方法は以下の2つ

– セッションIDをURLパラメータで渡す
– ブラウザのCookieに保存する

前者では画面を見ただけでセッションIDを盗まれてしまい、ユーザのなりすましに遭うため、非推奨。
後者がデフォルトで有効になっている。
php.iniでいうと、項目名は`session.use_cookies`で、値はデフォルトで1(有効)

# ブラウザのCookieに保存する

ログインの機能で使われる。
イメージでいうと

1. ログインすることで、ユーザの情報がサーバ側に送られる <- セッションでユーザのデータを保存する 2. サーバから整理番号を付与される <- セッションIDがクッキーに保存される 3. ページを遷移してもログインしている状態が続く <- ページにアクセスする度に整理番号(クッキーに保存されたセッションID)をサーバに見せている セッションIDがクッキーに保存されるとき通常はkeyが`PHPSESSID`でvalueはランダムな英数

元記事を表示

PHPでの簡易掲示板の作成の際の考え方

# 登録画面(register.php)
– 入力欄が空の場合
– 入力値($_POST)をチェックする
– エラーメッセージ用の連想配列を用意
– 重複登録を防ぐ(メールアドレス)
– SELECT文で入力されたメールアドレスでSELECT文発行
– 値が1件以上あればエラーメッセージを出す
– 入力の手間を減らす
– 入力値($_POST)をエスケープして出力
– 確認画面への遷移
– エラーメッセージ用の連想配列が空だったら実行する
– 入力値($_POST)をセッション変数に格納する
– header関数で確認画面へ遷移する
– 書き直し
– URLパラメータで書き直しかどうかを判断
– セッション変数の値を$_POSTに戻す

# 確認画面(confirm.php)
– 直に確認画面へアクセスされた場合
– セッション変数が空だったら、登録画面へリダイレクト
– 入力値を出力する
– セッション変数から入力値を出力する(画像の場合はセッション変数から画像のパス名を出力)

# 画像

元記事を表示

laravel のログイン機能をnameでログインへ変更する機能

以下の手順で上手く行きました。

1

【2014_10_12_000000_create_users_table.php】
$table->string(‘name’)->unique();

2
【LoginController.php】
public function username()
{
return ‘name’;
}

3
【login.blade.php】

Name

元記事を表示

Laravel で S3 にファイルを上げるタイミングで ACL を設定する

### はじめに

Laravel のファイルストレージでは AWS の S3 を指定して保存することができます。
S3を指定する方法は公式ドキュメントを参照してもらうとして、保存は下記のように `store` メソッドを利用します。

“`php
file(‘avatar’)->store(‘avatars’);

return $path;
}
}
“`

### 重要なポイント

保存をするとき、上記の例では Storage ファサードを使っていません。
もちろんファサードを使って保存することも可

元記事を表示

composer 実行時に Allowed memory size エラーで困ったとき

composer update を実行したら、いきなり怒られるようになりました。

“`
# composer update

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 16777216 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php on line 220
“`

そんな時は、実行時のメモリ制限を切って対応しましょう。

“`
php -d memory_limit=-1 /usr/local/bin/composer update
“`

composerコマンドの配備先については、各環境で合わせて下さい。

元記事を表示

PHP 変数のデータ型を出力しよう

# 目的

– 変数のデータ型を確認する命令`var_dump`を知ったので簡単にまとめる

# 書き方の例

– 下記に`var_dump`の使用方法をまとめる。

“`
var_dump($変数名);
“`

– 下記にプレビューイメージを記載する。

“`
データ型(格納されている文字列の文字数) “格納されている文字列”
“`

元記事を表示

master以外のブランチからherokuにpushする方法

#railsアプリを作って、herokuをデプロイする(masterブランチ以外からデプロイする方法も同時に載せています。)

##1 コミット
“`
$ git add .
$ git commit -m “heroku”
$ git push origin ブランチ名
“`

##2 herokuにアプリケーションを新規作成する
“`
$ heroku create
“`

##3-1 herokuにデプロイする(masterブランチにいる時)
“`
$ git push heroku master
“`

##3-2 herokuにデプロイする(master以外のブランチにいる時)
“`
$ git push heroku <現在いるブランチ名>:master
“`

###※3-1 or 3-2 どちらかを実行してください

##4 herokuにデータベースを作成する
“`
$ heroku run rails db:migrate
“`

##5 アプリケーションを開く
“`
$ heroku open
“`

以上で、完成です。

元記事を表示

PHPでシンプルなToDoアプリ(掲示板)を作る

# データベース不要のToDoアプリ
## はじめに
今回、シンプルなToDoアプリ(掲示板)を作りました。
言語はPHPのみで、MySQLなどのデータベースは一切使いません。
[ToDoアプリ](http://mf3px.sakura.ne.jp/ToDoApp/todo.php)
## 今回作ったToDoアプリの特徴
– 投稿内容はボタンで削除することができます。
– 送信したときに画面遷移しません。

## この記事の対象者
PHPの基礎を勉強している人,PHPやサーバーサイド言語に興味がある人などなど。

## さっそく作きましょう!
わからない部分は一つ一つ調べ、進めていきましょう。

## PHP(32行),HTML
スクリプトを3分割していますが、実際は全て繋げて一つのファイルに記述します。まずはPHP前半です。(主に変数の準備)

“`php:todo.php

元記事を表示

【Laravel】リレーション先で検索する方法

Laravelでリレーション先で検索することがあったため備忘録。

例えば下記のようなモデルがあったとします。

“`User.php
class User extends Model
{
public function project()
{
return $this->belongsTo(‘App\Project’);
}
}
“`

“`Project.php
class Project extends Model
{
public function organization()
{
return $this->belongsTo(‘App\Organization’);
}
}
“`
※主キーはidとします。

# リレーション先で検索

Userからリレーション先であるProjectのorganization_idで絞り込みたいとします。

– whereHasを使用する場合

“`UserController.php
$Users = User::whereHas(‘project’,

元記事を表示

【PHP】stripe API で定額課金を実装する

#はじめに stripeとは
stripeは、クレジットカードなどの決算処理を代行してくれるサービスです。
シンプルな実装で決済処理を実現でき、カード情報を自社サーバで持たなくても良いなどの特徴があります。

大まかな流れとして、

1. サービスの請求モデルを作成
2. フロントサイドでカード情報を取得
3. バックエンドで顧客登録、決済処理

と進んでいきます。

#サービスの請求モデルを作成する

##1. stripeに登録する
###1-1.はじめに、[stripeの公式ページ](https://stripe.com/jp)にて、今すぐ始めるをクリック。
スクリーンショット 2020-01-15 20.24.58.png

###1-2メールアドレス、名前、パスワードを入力登録。

なお、テスト用に登録

元記事を表示

WindowsにphpMyFaq(sqlite)をインストール

# インストール環境
今回は以下の環境にphpMyFaqをインストールする手順を紹介します。

– OS:Windows10
– IIS:10.0
– PHP:7.3
– phpMyFaq:2.9
– SQLite:3.30

#事前作業
以下の作業は完了しているものとして説明を割愛します。
調べればいくらでも手順が見つかるので…

– IISのインストール、およびCGIの有効化
– PHPのインストール、php.iniの作成
– SQLiteのインストール、パスの追加

# 手順
## php.iniの設定変更
phpMyFaqを使用するために設定を変更します。
拡張モジュールの追加と、phpMyFaqインストール時に実行するセットアップスクリプトがタイムアウトしないようにするための設定を変更します。
処理がタイムアウトしてしまうとインストールが中途半端な状態で終わってしまうため、作業をやり直す羽目になります…注意してください!

■既存設定の変更(10時間に変更)
max_execution_time = 36000

■コメントアウトしている箇所を有効化
extension

元記事を表示

?【CakePHP2】処理の中で別のDB設定ファイルを読み、その内容にてDB再接続をする

## 環境
PHP 7.2.21
CakePHP 2.10.18
MySQL 5.7.27

## やりたいこと
CakePHPの処理中にて別のDBからデータを取得するためにDBの再接続を行いたい
前の記事にて別のDB設定ファイル読込み関数を用意したのでそれと合わせてControllerからDB切替えを行う

## やったこと
ビヘイビアに別のDB情報を読み込む関数を用意し
ModelでactAsでビヘイビアを指定

Modelには更にDB再接続の関数を追加しておいてControllerで呼び出す

### Model

“`Model/AppModel.php

元記事を表示

[PHP]クラスのプロパティーのDocコメントのannotaionの取得

## 前提
c#のattribute的な書き方をしたい

## 作ったもの
PropertyのDocCommentにhiddenがあったら、

“`html

“`

を返します。

## 実装
まずは値を格納するだけのクラス。
ViewModelを想定しました。

“`php
class ExampleViewModel extends ViewModel{
/**
* 返す
* @hidden true
*/
public $hidden_prop;
/**
* 返さない
* @oden
*/
public $not_hidden_prop;
/**
* 返さない
* @hidden false
*/
public $false_hidden_prop;
/**
* 返す
* @hidden true
*/
public $hidden_prop2;
// 返さない
pu

元記事を表示

OTHERカテゴリの最新記事