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

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

CodeIgniterのMVCモデル

CodeIgniterのMVCモデルの書き方をメインに書いています。

# Controller

– 静的なページを作成するためのクラスを実装したコントローラを作成する。

作成するクラスは、system/core/Controller.php の CI_Controller クラスを継承させる。

引数にページの名前を取る。

そのページをロードするメソッドは、show()

“`php
class Pages extends CI_Controller {

public function show($page = ‘home’)
{
}

}
“`

– クラスの継承
– オーバーライド:小クラスと親クラスで同じメソッドを使用した場合、コクタスが優先され、親クラスを上書きする。
– メソッド

特殊な役割を持つメソッド

– デフォルトメソッド:index()
– 第二メソッドが空の時に実行されるメソッド

元記事を表示

入力内容の取得

##出力側
出力する側のhtmlのform属性のactionに送信先のphpファイルを設定する。

“`html:qiita.html




“`

##受け取る側
$_REQUESTの内容はname属性でつけた値を入れることで取得

htmlspecialcharsとすることでhtmlのタグとして認識される文字列を逃がせる

ENT_QUOTESは数値であるために””はつかない

“`php:qiita.php

元記事を表示

Laravel5.6 ユーザと管理者の認証を分けて管理者の認証情報のみ名前とパスワードだけにする

# 目的

– ユーザと管理者とで認証を分ける方法をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| PC | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 5.6.40 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaeecae69d639

元記事を表示

phpDocumentorを使ってみる

環境
初書:2020/09/03
PC:macOS 10.15.6
Composer: v1.10.10

#phpDocumentorとは
> phpDocumentor 2は、PHPソースコードから直接ドキュメントを生成できるようにするツールです。 これにより、ユーザーインターフェイスから利用できるものだけでなく、ソース内に埋め込まれた機能に関する詳細情報を消費者に提供できます。

(https://www.phpdoc.org より。google翻訳による訳)
要するに、自動ドキュメント生成ツールである。
phpファイルの中に、phpdocでコメントを記述していれば、それを元にドキュメントを作成してくれる便利ツールです。
前から気になってはいたものの、ダウンロードが難しそうで断念していたが、ひょんな事からComposerをダウンロードしたので使ってみることにした。

# ダウンロード方法
composerを使う(composerは依存関係を多く使うので不便な方は注意とのこと)

“`zsh
% composer require –dev phpdocumentor/phpdo

元記事を表示

Ajaxのデバッグにログを使うのはもうやめよう!これからは開発者ツールで楽々デバッグ

## 面倒なAjaxのサーバーサイドのデバッグ
Ajax通信の際のサーバーサイドのデバッグはログに吐くテクニックを使う人が多いですが、ブラウザとログを行き来するのは億劫に感じませんか?

“`php:よくあるデバッグ
error_log(print_r($result, true), 3, ‘/var/log/debug_log’);
“`

## 開発者ツールでデバッグが楽になる

そんなときはChromeの開発者ツールからリクエストの結果を確認すると捗ります。
Networkタブから該当のAjax通信を選択してPreviewを見るだけ。

(1)Networkを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206138/bba5e142-43c0-359b-1035-f43dec38306f.png)

(2)該当リクエストを選択して、Previewタブを表示する
![image.png](https://qiita-image-store.s3.ap-northea

元記事を表示

Non TypeScriptスタックで型のバリデーションをする機構を01で実装してみる

こんにちは(๑╹ω╹๑ )

↓ つい先日投稿した記事を多くの方に読んで頂けてとても嬉しいです(語彙力…..

[「Vercel + freenom + Getform.io」構成で「爆速 + 管理費完全無料」のポートフォリオをGatsbyJSで作ったら幸福度が高まった話](https://qiita.com/huuya/items/a52609d5407ad873eaa2)

今日はJavascript(主にTypeScriptスタックの無い環境)で型のバリデーションをする機構の実装について紹介します?

少し特殊な書き方をしますが、可変メソッドを多用する立ち回りで実装できます?

## 可変メソッドとは

– メソッド名からメソッドを評価する

ことです。

PHPでは、

– 可変変数
– 可変関数
– 可変クラス

等できるかと思いますが、
それに近しい立ち回りです?‍♂️

以前、[PHPの言語仕様の理解を深める特殊な立ち回り](https://qiita.com/huuya/items/f9bedb6b600c55613c4b#%E5%8F%AF%E5%A4%89%E

元記事を表示

Laravelの認証機能をカスタマイズしてデータベースにレコードを作成する

## 現状
`Laravel`の認証機能を有効化したけど、どうカスタマイズすればデータベースにレコードを登録できるんだろう…?

## 解決法
**めちゃくちゃ簡単だった**

`(プロジェクト名)\app\Http\Controllers\Auth\RegisterController.php`から下記のコードをコピーして、挿入したいテーブル名、カラムとデータをコントローラーで指定するだけ。

“`RegisterController.php
protected function create(array $data)
{
return User::create([
‘name’ => $data[‘name’],
‘email’ => $data[‘email’],
‘password’ => Hash::make($data[‘password’]),
]);
}
“`

**こんな感じに↓**

“`CustomiseController.php

元記事を表示

【PHP_エラー】session_start前に何かを出力した際に発生するエラー

PHP開発中に起きたエラーを備忘録として記録します。
#発生したエラー
“`
Warning: session_start(): Cannot start session when headers already sent in C:\xampp3\htdocs\staff_login\staff_top.php on line 22

Warning: session_regenerate_id(): Cannot regenerate session id – session is not active in C:\xampp3\htdocs\staff_login\staff_top.php on line 23
“`
session_start()を記述したところ上記のようなエラーが発生しました。
該当のコードを確認すると、下記のように記述されていました。

“`php





coffeeapp


元記事を表示

cakephp3 チートシート

自分用です。
忘れてぐぐりがちなこと覚え書き
phpの関数とかもあるかもしれない
随時更新予定

クックブック
https://book.cakephp.org/3/ja/index.html

#クエリビルダー
https://book.cakephp.org/3/ja/orm/query-builder.html
https://www.ritolab.com/entry/67
https://qiita.com/morisuke/items/e466d2ab360ab5646e9a

##クエリ
“`php

$query = $this->HogeModel->find() //ここまでテンプレ
->select([‘id’, ‘title’]) //取得するフィールド名
->where($conditions) //取得条件
->order($order) //order
->limit($limit); //取得件数

元記事を表示

PHPでS3からファイル一覧を取得する

使う機会あると思うのですが、
依存関係とかそういったものを意識せずに使えるコードが無かったので。

## 準備
“`sh:console
% composer require aws/aws-sdk-php
# 中略

% touch get.php

% tree -L 1
.
├── composer.json
├── composer.lock
├── get.php
└── vendor
“`

ユーザやバケットは作成してあり、画像が格納されている前提です。

### コード

“`php:get.php

元記事を表示

Ubuntu-server20.04にopenssl、apache2.4、php7.4をソースからビルドする。

今回の流れは大まかにOpenSSL、Apache Subversion、APR、APR-util、PCRE,、Apache2(httpd)、PHPの順です。適宜パッケージとビルドを使い分けていきます。

| 環境 | |
| ——- | ——————- |
| OS | Ubuntu server 20.04 |
| CPU | Intel Core i5 2500 |
| メモリ | 4GB(DDR3) |
| Network | LAN |

| バージョン | 2020/09/01現在、最新 |
| ———- | ——————– |
| httpd | 2.4.26 |
| OpenSSL | 1.1.1g |
| PHP | 7.4.9 |

## 0.パッケージの

元記事を表示

1分でできるVSCodeでBladeファイルを綺麗に整形する設定方法【Laravel】

## 前置き
VSCodeは標準でファイル整形機能があるが、HTML, CSS, Javascriptにしか対応していません。
他の形式の場合は自分でフォーマッターを用意する必要があります。
とっても簡単なので、設定していない方はぜひこの機会に設定してみてください。

## 設定手順
### VSCodeの拡張機能の「Laravel Blade Snippets」をインストールする

※すでに「Laravel Blade Snippets」をインストール済みの方は飛ばしてください

#### まずVSCodeを起動して、VSCodeの左バーのメニューから「拡張機能」を選択してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206138/ed6868af-b2ba-1851-210a-30f4df3916b1.png)

#### 次に画面上部の「Marketplaceで拡張機能を検索する」と表示されている検索バーに「blade」と入力すれば、「Laravel Blade Sni

元記事を表示

DockerでPuphpeteerを使う

# この記事について
すでにあるプロジェクトに[Puphpeteer](https://github.com/nesk/puphpeteer)を導入する

自分用メモです

## 作業

“`:in-container-terminal
$ composer require nesk/puphpeteer
$ npm install @nesk/puphpeteer puppeteer
“`

“`Dockerfile:Dockerfile
FROM php:7.4.1-fpm

# 省略

# puppeteerのインストール
RUN apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocai

元記事を表示

気になった関数まとめ

ini_set

“`
ini_set( $varname , $newvalue )
“`
あらかじめ設定された[$varname](https://www.php.net/manual/ja/ini.list.php “$varname”)を $newvalueの値に変更。

serialize

“`
serialize( array(‘first’ => 1, ‘second’=>two)
//a:2:{s:5:”first”;i:1;s:6:”second”;s:3:”two”}
“`
型:値{型:文字数:値;型:値}

型別の値

PHP:serialize-Manual User Contributed Notes 引用
>
String
s:size:value;

>Integer
i:value;

>Boolean
b:value; (does not store “true” or “false”, does store ‘1’ or ‘0’)

>Array
a:size:{key definition

元記事を表示

【Laravel】同ページに2つのフォームとバリデーションエラーメッセージの表示欄がそれぞれある場合、エラーメッセージをそれぞれ分ける

## 1行で

– bladeのエラーメッセージ表示部分のifの条件を変える

## 概要

**同ページにユーザー設定とパスワード設定がそれぞれ独立して存在する**というパターンで実装する。
ひとつのsubmitで2つのformが更新されるというパターンではない。formとsubmitがそれぞれ同じページに1つずつある。

## エラーメッセージ表示

通常、バリデーションによるエラーメッセージはこのような記述で書いて表示する。

“`php:edit.blade.php
@if ($errors->any())

    @foreach ($errors->() as $error)

  • {{ $error }}
  • @endforeach

@endif
“`

これが同ページに2つあると、例えばユーザー設定のエラーがかかると、例えばパスワード設定のform内に書いていたとしても、そちらにも表示される。逆もまた然

元記事を表示

PHP バリデーション 備忘録

##はじめに
PHPのバリデーションの備忘録。(自分用)
駆け出しエンジニアなので、何かアドバイス、ご意見ありましたら
よろしくお願いいたします。

##様々な正規表現

・半角数字チェック

“`PHP:validation.php
if( $i[“char_type”] === “tel” && !preg_match(“/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/”,
$i[“value”])){
//省略
}
“`

・半角数字・ハイフンチェック

“`PHP:validation.php
if( $i[“char_type”] === “number_hyphen” && !preg_match(“/^[0-9-]+$/”, $i[“value”]))
{
//省略
}
“`

・半角英数チェック

“`PHP:validation.php
if( $i[“char_type”] === “eisu” && !preg_match(“/^[a-zA-Z0-9]+$/”,$i[“value”]))
{
//省略
}
“`

・ひらがなチ

元記事を表示

Laravel 6.x環境でparatestを使ってテストを実行した話

## はじめに

paratestを導入してみたかった & 導入したので備忘録。

ほぼ [Laravelで並列テストを導入するための道のり](https://qiita.com/niisan-tokyo/items/2fbfd30037f94661366d) を参考にさせていただきました。

## 環境

– PHP

“`
PHP 7.4.3 (cli) (built: Feb 20 2020 21:53:46) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
“`

– [Laravel Framework 6.18.35](https://github.com/laravel/frame

元記事を表示

PHPでの開発を始めるので、概要をまとめてみた

# PHPとは
Webアプリ開発ができる

# 役割

– HTMLを作ること
– データを管理すること

# ローカル開発環境

サーバーにアップせずにPHPが書き換えたHTMLを確認するために必要な作業

必要なインストール

– PHP
– Webサーバー

上記はインストールがかなり難しい。

なので、インストールをアシストしてくれる、XAMPPやMAMPを使う。

# MAMPとは

Macintosh、Apache、MySQL、PHPを省略してつなげた名前。

簡単にWeb開発環境を立ち上げられるようにするために必要なソフトウェアをパッケージ化したもの。

XAMPPとほぼ一緒。開発元が違う。

RubyやPythonを使う人向け。

# コードの書き方

“`php
// 最初に で囲う。
 

// 変数

元記事を表示

MacでLaravelの環境を構築した

# はじめに
最近研究室でMacを購入してもらったので、MacにLaravelの環境構築をしました。Laravelは最近本を参考にしながら勉強をしており、まだまだ初学者ではありますが、頑張ってます。レベルで言うとCRUD機能を作れるようになったくらいですね。この記事は備忘録程度でまとめておきます。

# brewのインストール
Laravelをインストールする前にMacを買ったらすぐに`brew`をインストールしましょう。すでにインストールしている方は飛ばしてもOKです。
brewのインストール手順は以下のサイトに詳しく手順が載っているので、そちらを参考にしながら行ってください。
https://brew.sh/index_ja

# composerのインストール
brewのインストールができたら、次はLaravelをダウンロードするために必要なパッケージ管理システムである`composer`をダウンロードしましょう。

“`
$ brew install composer
“`

インストールが終わったら、しっかりインストールできているか確認しましょう。

“`
$ brew

元記事を表示

PHPのコンストラクタはprivateにできる

「PHPにおいてコンストラクタのアクセス権は`public`である必要がある」とする記事をいくつか見かけたのですが、**これは誤りです。**
(例)https://laraweb.net/surrounding/1472/

他の言語のことは知りませんが、少なくともPHPは、[コンストラクタ](https://www.php.net/manual/ja/language.oop5.decon.php)を`private`や`protected`に設定することができます。

# コンストラクタがprivateになるとどうなるか

**クラスの外から`new`できなくなります。**
以下のコードはFatalエラーになります。

“`php

元記事を表示

OTHERカテゴリの最新記事