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

PHP関連のことを調べてみた2020年04月07日
目次

WordPressの出力内容を制御するときの超基本

#まえがき
※この記事は「[カスタム投稿タイプをゼロから作ってウェブサイト上に表示させるまで](https://qiita.com/yomogenium/items/32979df92721483a81e1)」
の続き。
前回の記事では書ききれなかった重要ポイントを書いていく。
なお、この記事は**PHPどころかプログラムがろくに分からない人向けの記事である。**

#基本原則1:表示と出力

[前回の記事](https://qiita.com/yomogenium/items/32979df92721483a81e1)で、以下のようなコードが登場した。

“`php:single-newspaper.php


元記事を表示

Composerとか入れたくないので簡単に使えるフレームワークを作った

そういえば僕も3ヶ月くらい前にComposerとかに依存したくなくて1ファイルで完結するフレームワークを作ってた。ソースコードは[zonuexe/hogephp](https://github.com/zonuexe/hogephp)にある。

こういう雰囲気でコードが書ける。

“`index.php
get(‘/’, function () { ?>


Hoge index

The Hoge PHP Framework



“`

トップページのルーティングしか定義していないが、これで起動スクリプトのコード全部だ。ほかにディスパッチ処理などのボイラープレートは要らない。

たわむれに作ったものなのでセキュリティは万全に考慮できているわけではない。

## コンセプト

*

元記事を表示

超簡易ルーターを作成しました。

## 前置き

これ、本当に自分の良くない所だと思うのですが、Composerとかで入れるライブラリとかってエラーが起きたり覚える事が多かったりで使うのが面倒なんですよね。
(なのでLaravelとかも中々踏み込めないでいるんですよね)

ということで自分用として簡易ルータを作りました()
とりあえずTinyRouterという名前にしておきました。

ソースコードは最後に載せますが、正直自分でもしっかり動くかわからないのでちゃんとしたサイトとかでは使わない方が良いです。

## これの特徴
– 本体容量が小さい & 1ファイル
– $_GETなどの変数をそのまま使える。
– **少しだけ**Node.jsのExpressに似てる
– できることが普通のルーターに比べて少ない
– 他のルーターに比べてしっかり作られてない
– 他のルーターとの互換性がない

## 使い方

“`php
get(‘/’, function() {
echo “Hell

元記事を表示

Virtualbox+Vagrant+HomesteadでLaravelの開発環境を構築した際に躓いたことを4つまとめ

どうも、直人です。
本日は、
**Virtualbox+VagrantでLaravelの開発環境を構築した際に躓いたこと**
というテーマで4つピックアップしてお伝えしていければなと思っております。

#執筆背景
はじめに、執筆背景です。
私は、現在laravelフレームワークについて学習してます。
開発環境は、Homesteadを利用して構築しており、laravelのバージョンは6.xを使用しております。

この記事では、そんなlaravel初心者の私が
**Homesteadを利用してlaravelの開発環境を構築する際に躓いたところ**
をまとめてみました。

なお、本記事は、躓いた点に焦点を当てた記事となっており、
**環境の構築方法については本記事では触れないため、**
構築方法について知りたい方は他の記事を参照してください。
#躓いたこと4選
以下から、躓いたところとその解決方法を示していきます。
##VirtualBoxのインストールでインストールできませんでしたと表示される

VurtualBoxのインストーラーを公式サイト(https://www.virtualbox

元記事を表示

【WordPress】ACFで、『投稿以外』でチェックボックスやセレクトボックスの値とラベルを全て取得 | get_field_object(っぽいもの)を使う【Advanced Custom Fields】

WordPressを使用した企業サイトで、**「管理画面のカスタム投稿一覧で、カスタムフィールドを使った絞り込み検索がしたい」**というオーダーがあった時の話。
カスタムタクソノミーや作成者での絞り込み検索の実装は過去に経験があったので、その要領でいけるだろうと考えていたら意外なところで詰まったので備忘録として。

# 要件
– カスタムフィールドの実装
– 管理画面のカスタム投稿一覧で、カスタムフィールドで絞り込み検索できるようにする

実装するカスタムフィールドはこんな感じ。
![test-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284502/9ee13734-be23-abd6-b1f4-45da41d6f0a8.jpeg)
よくある簡単なセレクトボックス。

 

## 実装
ひとまず、管理一覧画面に自前の検索用セレクトボックスを追加するには`restrict_manage_posts`を使ってよしなにコードを書けばよい。

で、ACFには`get_field_object`という、

元記事を表示

PHPでMySQLと接続するために行ったこと

こんにちは、現在研修でPHP+DBでCRUD機能をつけた掲示板を作成しているのですがPHPとDBでうまく接続ができなかった為、共有したいと思います。なんかの参考になれば幸いです。

##QそもそもなぜなかなかDB接続できなかったのか。
“`php
try{
$db = new PDO(‘mysql:dbname=php_db;host=localhost;charset=utf8’, ‘root’, ‘root’);
} catch (PDOException $e) {
echo ‘DB接続エラー’. $e -> getMessage();
}
“`
上記のコードがMySQLと接続する際のコードになるのですが、PDOというPHPに接続するための関数の第一引数にデーターベース名とhost名、文字コードなどを指定でき、第二引数にユーザーの権限、第三引数にパスワードを入力しないといけないとのことですが、XAMPPを使用している方なら第三引数を特に指定せず **’ ‘** だけでいいらしいのですがMAMP環境下だと第三引数にパスワードを指定しないといけなく、私は省

元記事を表示

【PHP8.0】throw文がthrow式になる

[throw expression](https://wiki.php.net/rfc/throw_expression)というRFCが投票中です。

最初のアイデアは2019/12/06の[Sebastiaan Andewegによるツイート](https://twitter.com/sebandeweg/status/1202684740383453185)。

元記事を表示

Laravel6系 Migration テーブルコメントをセットするには(MySQL, PostgreSQL)

ありそで無かったので記事にしますが、PostgreSQL未検証です。みたいに適当なので、参考程度にしてください。

もう書いちゃう方が早いので、以下コードを紹介します。
## ProvidersへMigrateMacroProviderを作る

“`php
php artisan make:provider MigrateMacroProvider
“`

## App\Providers\MigrateMacroProvider::bootを編集

“`php

元記事を表示

Laravel6.xでよく使うコマンド一覧 〜マイグレーションからモデルやコントローラ作成まで〜

# 個人的によく使うコマンドの使用例

コマンド一覧を見てもオプション関係がゴッチャになるので、定型文的によく使うLaravelのコマンドをメモ。
バージョンはLaravel 6.x です。最近リリースされた7では確認していませんが、確認が取れたらまた更新します。

### マイグレーション関連
#### Composerのオートローダを再生成

“`php

composer dump-autoload
“`

シーダクラスを作成した後などは、Composerのオートローダを再生成するためにこちらのコマンドを実行する必要があります。
シーディングやマイグレーション時にデータベースのエラーが出るときは大体このコマンドを忘れているパターンが多いです。
上記コマンドを打たなくてもエラーにならない場合もあり、例えば元々あったシーダーを編集してシーディングし直すときは必要なさそうでした。

#### マイグレーションファイルの作成

“`php
php artisan make:migration create_users_table –table=users
“`

オプションを

元記事を表示

Laravelのroutingでprefixにパラメーターを入れる事ができる

LaravelでRestAPIライクなURLを設定する時には、prefix内にパラメーターを設定すると子のroute側でパラメーターが受け取れます。

# 例
/posts/{id}/comments
/posts/{id}/recommends

というようなAPIを作成するとします。

以下のようにしてRouteのところにidを入れてURLを指定することも出来ますが、

“`api.php
Route::prefix(‘posts’)->group(function () {
Route::get(‘/{id}/comments’, ‘PostController@comments’);
Route::get(‘/{id}/recommends’, ‘PostController@recommends’);
});
“`

以下のようにprefixにパラメーターを入れる形でもControllerのメソッド側でidをパラメーターとして受け取ることが出来ます。

“`api.php
Route::prefix(‘posts/{id}’)->group(functi

元記事を表示

Laravel環境構築(Mac)

#はじめに

Laravelを初めて4月から初めて触る初学者です。
元はRailsを少し触っていましたが、色々あってLaravelを学習することにしたので、環境構築について自分なりにまとめておきます。

#PC情報
– macOS Catalina 10.15.3
– Macbook Pro (16-inch 2019)

#構築手順

##(1) Composer

###composerのダウンロード
PHPのパッケージ管理システムである[Composer] (https://getcomposer.org/)をインストールします。
上記リンクから

“`
Download >> Manual Download(下の方)
“`

にアクセスし最新バージョンをダウンロードします。
(2020年4月時点では、**1.10.1**が最新のためこれをダウンロード)

ダウンロードフォルダに**composer.phar**がダウンロードされたかと思います。

###composerをいつても呼び出せるようにする
ターミナルを起動し、以下のコマンド入力

“`
$ cd ~/Down

元記事を表示

Smartyを使ってみる

#1 インストール
1 download
 以下のサイトよりダウンロードします。
 http://www.smarty.net/

2 インストール
 ダウンロードしたzipを解凍します。使うのはlibsフォルダのみです。
 DocumentRootにsampleフォルダを作成しサンプルアプリを置くものとして

 htdocs + sample
      └ libs      <- ダウンロードしたsmartyのlibs  ※libsを複数プロジェクト共通で利用する場合は、   c:\smarty3\libs 等適当な場所へ配置しましょう。 3 設定  smartyのlibsを共通で使う場合は、php.iniのinclude_pathの設定を行います。 ";"を削除し、";c:\smarty3\libs"等と追記します。 ```php.ini ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes"  ↓ include_path = ".:/php/includes:/usr/local/lib/smarty3/li

元記事を表示

phpで標準入力する方法

今回は備忘録をかねて、様々な例を使ってphpで行う標準入力について、まとめてみました。

***基本編***

“`app.php
/* 1行のデータを取得する場合
* 例:「hogehoge」
*/
$data = rtrim(fgets(STDIN));

/* ‘ ‘(空白行)で分けられた1行のデータを配列で取得する場合
* 例:「hogehoge gehogeho」
*/
$data = explode(‘ ‘, rtrim(fgets(STDIN)));
“`
**応用編**

“`app.php
/* 先頭の行に数字Nが書かれてて、後続のN行分のデータを配列で取得する場合
* 例:「2
* hogehoge
* gehogeho」
*/
$data = rtrim(fgets(STDIN));
$data_arr=array();
for($i=0;$i<$data;$i++){ $data_arr[]=rtrim(fgets(STDIN)); } /* 出力値 * Array( * [0] => gehogeho
* [1] =

元記事を表示

Slackでモーダル(ダイアログ)を使ってデータを送信する

最近、弱々エンジニア会に参加しました。
記事貢献を兼ねて、久しぶりのQiita投稿です!
今回はSlackでSlackAppを使って、モーダル(ダイアログ)使ったデータの入出力を行う方法を解説していきたいと思います。

## 今回作るもの
**/modal** というSlashコマンドを実行すると [Block Kit Builder](https://api.slack.com/tools/block-kit-builder) で作られたモーダルを表示して、入力された値をサーバーに送るSlackアプリを作ります。
![ezgif.com-video-to-gif (3).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/df0573cd-9832-661b-a7a7-0dd26130d6fb.gif)

## 参考資料
https://api.slack.com/surfaces/modals/using

## 開発環境
– PHP 7.2 (Laravel 6.16)
– GAE Stan

元記事を表示

laravel入門2版(本)が全然始められない人のためのまとめ

##吐きそうになりながらlaravelインストールした話
ララベルの代表書であるララベル入門第二版を購入してインストールしようとしたがつまずくポイントが多すぎて吐きそうになったので過去の自分を助けてあげるつもりで解決策を書いていこうと思います。

##環境/対象者
mac Os catalina
これからlaravel6とphp7.2を使おうとしている人
terminalのコマンドがある程度(directoryの移動程度)ができる人

##詰みポイントのまとめ
– まずこれが設定できていないと詰む zshとbash
– composerでlaravelをインストールしようとしてもphpのバージョンがふるかったり相性が合わないと詰む
– pathの通しかたが分からなくて詰む、というかパスが何か分からなくて詰む

###ますこれができていないと詰むzashとbash
まずlaravelを初めてインストールしようとした時にterminalのshellがzshだとパスがうまく通せなくて詰みます。
bashに変更しましょう。

“`
echo $SHELL
“`
でshellがbashにな

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その4)

## Webサーバ(HTTP)によるアクセス制御と認証

アクセス制御やHTTP上の認証の設定方法は、Webサーバによって異なります。なお、Document rootより浅い階層にアクセスされたくないファイルを置くことができるのならば、アクセスの防止はそのような形でも実現できます。

### Apache HTTP Serverによるアクセス制御
Apache HTTP Serverでは、主に.htaccessファイルを使ってアクセス制御を行います。Document root以下の対象のディレクトリに`.htaccess`ファイルを作成し、そこに決まった形式で設定を記述します。

“`apache
Deny from All
“`

これはそのディレクトリ以下へのすべての(HTTPによる)アクセスを拒否する(403を返す)という設定です(ただし、これを設置したディレクトリより深い階層に別の`.htaccess`ファイルを置くと上書きされることがあります)。

httpd.confファイルにアクセスできるのであれば、アクセス制御をそちらに記述することもできます。

mod_rewr

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その3)

## PHP + SQLite(その2)
さて、ようやく本題です。PHPとSQLiteを組み合わせて、簡単なWebアプリケーション(ブログ)を作ってみましょう。

### 記事を投稿する

まず、POSTリクエストを送信するフォームを含むHTMLを作成します。あとでPHPスクリプトを書き足すので、ファイル名は`edit.php`のように拡張子を`php`にしておいてください。

“`php


“`

PHPを先頭に書き足します。メッセー

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その2)

## PHP
PHPは、HTML文書に埋め込み可能なサーバ側(サーバサイド)で実行されるスクリプト言語です。(有料の)レンタルサーバではPHPとCGIが実行できる環境が多いです(最安で年額1000〜2000円前後か、VPSなどに比べて共有サーバだとかなり安い)。CGIというのは、対象のファイルにブラウザから呼び出しがあったとき、そのファイル(プログラム)を都度実行し、出力を応答する仕組みです。印象ですが、CGIのプログラムファイルには(Shebangが1行目に記述された)スクリプトファイルを使うことが多く、CGIの言語にはRubyやPerlが主に使われ(Pythonも使えますが)、一昔前の掲示板やチャット、一部のゲーム(箱庭諸島やブラジャータウンなど)はこのような形式のCGIで動いていました(cgi-binというディレクトリや拡張子cgiが特徴的か)。今だったらDjangoとかWebSocketとかFirebaseとか使うんでしょうか。

– [PHP](https://www.php.net/)

PHPには、WebサーバのSAPI経由で動作する方式(主にApache HTTP S

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その1)

## はじめに
この記事は、PHPとSQLiteを使って非常にシンプルなWebアプリケーション(ブログ)を作り、またそこから他のDBMSへ移行したり、他の言語等でWebアプリケーションを開発する基礎を押さえることを目的にしたものです。ある程度のプログラミング経験と自分で調べながら読み進めることを要求するかもしれません。各項目は割と手抜きだったり、文字が多かったりします。

また、Webの世界は日進月歩ですので、あまり新しいバージョンだと互換性が失われていることもあるかもしれません。しかし、同時に脆弱性の発見と修正も日々行われています。最新の安定版、というようなリリース元がおすすめしているバージョンを使うといいのではないかな、と思います(リリース元の発信する情報には注意するようにしてください。あなたのアプリケーションとそのユーザが影響/被害を受ける致命的な脆弱性が見つかることがあります)。

それから、もし(バージョンの関係や自分の追加したコードで)動かないところがあったら、自分で調べて直してみるのも大切なことかなと思います(誤植はすいません..)。また、英語で調べてみないと情報が得ら

元記事を表示

【cakePHP】環境構築 (Mac)メモ

#はじめに
・homebrewインストール
・phpインストール
・composerのインストール
・mysqlの接続
このような流れで環境構築していきます。

#Homebrewインストール
公式https://brew.sh/index_ja.html
通りにターミナルでコマンド入力

“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
#PHPインストール
*次のComposerのインストールには、PHPが先にインストールされている必要があります。今回は以下のバージョンのPHPがインストールされている環境にComposerをインストールします。

“`
brew install php@7.2

==>
Cloning into ‘/usr/local/Homebrew/Library/Taps/homebrew/homebrew-php’…
~~中略~~
To have launchd start homebre

元記事を表示

OTHERカテゴリの最新記事