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

PHP関連のことを調べてみた2019年12月09日
目次

【決定版】PHP : echoとprintの違い 【まとめ】

# 序文
## echo / print とは
PHP以外でも古くから、LinuxコマンドやC言語など様々な場所で存在する標準出力系の命令。
ブラウザやシステムに対して「とにかく文字列を出力する」ということをしてくれる。
echo / print について各所で調べると解説記事が散在するようなので、自分用に下記でまとめています。

## PHPでは echo / print どっちを使うべきか?
結論から言うとどちらでも良いようです。仕様が少しだけ違いますが、自分の狭い観測範囲ではそのために使い分ける場面はほとんどないので、使い分ける場面に遭遇したらまた記事は更新します。
echo / print を使っている人の理由をそれぞれ確認すると「初めて使ったのが echo だったから」「最初に読んだ本のサンプルプログラムでは print だったから」というものが多い印象。
echo と print は、PHPマニュアル上はどちらも「String 関数」のくくりになっていますが、両者ともに厳密には「関数」ではなく「言語構造」(PHPという言語を構成する要素そのもの。他にifやarray()やu

元記事を表示

コーディングの手助けとなる “コメントコーディング” を紹介

これは[ユアマイスター Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yourmystar)の9日目の記事です。

# はじめに
みなさんは、**コメントコーディング**の存在を知ってますか?
コーディングをする上で色々な手助けをしてくれるこの手法を私は利用しています。
なので、今回の記事を通して

・まずはその存在を知って欲しい
・そして良し悪しを理解して欲しい

この2つの観点から、コメントコーディングに関する考えを独自の主観でいくつかお話ししたいと思います。

# コメントコーディングとは?
まずコメントコーディングは、コメントとコーディングを掛け合わせた造語であり、コーディングをする上での手助けとなる手法を指します。

ちなみにコメントに関しては、Wikipediaさんで掲載されてましたので、下記にその引用を記載します。

>コメント(英: comment)とは、コンピュータ言語(プログラミング言語やデータ記述言語)によって書かれたソースコードのうち、人間のために覚えとして挿入された注釈のことである。こ

元記事を表示

nginx-proxy と docker-compose でレガシーなLAMP(LEMP)環境を複数稼働できるようにした

この記事は、[Makuake Development Team Advent Calendar 2019](https://adventar.org/calendars/4716) 7日めの記事です。

yutakiと申します。
PRIME ORDERというWebシステム開発サービスのエンジニアリングマネージャをやっております。

トップページ

# 概要

最近、レガシーな案件のプレビューのために
十数年ずっと頑張ってきたオンプレの共有開発サーバが故障してしまい
急いでnginx-proxyとdocker-composeで複数案件の開発環境を復活させた話をします。

# やったこと(ざっくり)
※端末はmacです
基本的に下記のコンテナ構成でプロジェクトを作成

– 新しめ(laravel系): [nginx] + [php] + [mysql] + [node(build専用)] の4台構成
– 古め(その他): [apache & php] + [mysql] の2台構成

そしてnginx-proxyでローカルドメインを割り当てました。
たと

元記事を表示

[baserCMS] AddConfig を使って固定ページ専用の入力画面みたいなものを作る

前回記事で書いたAddConfigプラグインは独自のconfigを追加できるものですが、実質的にはカスタムフィールドでオリジナルデータを簡単に登録できるものだったりもします。
これをうまく利用する事でHTMLが苦手な人も入力しやすい固定ページ用の入力画面(会社案内とか求人情報とか)を作ることができます。
今回は、そのやり方について紹介したいと思います。

## 固定ページのカスタム方法

デフォルトでインストールされた状態の会社案内(about)ページをカスタマイズするイメージで進めていきます。

### AddConfigでカスタム項目を作る

カスタム項目をAddConfigで作成していきます。
AddConfigのインストールや使い方そのものに関しては、前回の記事や使い方の記事を書いて頂いたものがあるのでそちらを参考にしてください。

– https://github.com/BigFly3/AddConfig
– [CakePHPユーザーがbaserCMSを開発しやすくするためのカスタムフィールドを作ってみた。](https://qiita.com/BigFly/items/

元記事を表示

Laravelの通知ライブラリでslackボタンアクション機能を実装

[Laravel Advent Calendar 2019 – Qiita ](https://qiita.com/advent-calendar/2019/laravel) の 9 日目 の記事です。

Laravelの通知ライブラリを使ってボタン付きのslack通知を実装した記事を
下書きのままにしていたので書き上げることにしました..!

# Laravelの通知ライブラリ
## laravel5.8以降のslack通知機能に変化

通知クラスが外部ライブラリに変わりました!
[5.8以降のslack通知(公式)](
https://laravel.com/docs/5.8/notifications#slack-notifications)

composerを使って入れないと使えなくなりました。

“`
composer require laravel/slack-notification-channel
“`

ちなみに`v5.8`以前は`guzzle`を入れれば使える形でした..。
[5.8以前のslack通知(公式)](
https://laravel.com/d

元記事を表示

【PHP】変数のスコープのお話

#関数の内部から、グローバルスコープの変数へアクセスすることはできない。#
まずは、このコードをご覧ください。

“`php
$a = 0;
function hoge () {
$a++; // Undefined variable: a
}

hoge();
echo $a; // 0
“`

期待した動作としては、関数の中で変数`$a`の値をインクリメントして、1増えた値を出力してくれるものでした。
どうして期待とは異なった動作をしたのでしょうか。

それは、関数の中と外で変数のスコープが異なることに原因があります。

通常、関数の外側で定義された変数は**グローバルスコープ**となり、関数の内部で定義された変数は、**ローカルスコープ**となります。
(ちなみに、PHPにブロックスコープはありません)

“`php
// グローバルスコープ
$a = 0;
function hoge () {
// ローカルスコープ
$a++;
}
//グローバルスコープ
hoge();
echo $a;
“`
しかし、特に他の言語を学んだことのある方なら、グ

元記事を表示

Phalconで実装する際に躓いたことのetc

jpgについて その3 でも書こうかと思っていたが、需要無いだろうし、ちょっと書くには準備が必要なので、今回は直近で触って齷齪したphpのフレームワーク「phalcon」のちょっとしたことを書いていこうかと思います。

Phalconでコード書いてて思ったことはまず記事の少なさと、記事があっても古くてリンク切れってのが散見されたこと。あと、各環境でのDIとかの書き方によって、そのまま適用するのが難しいってこともあった・・・
cakeとかに比べてベンチマークで20倍の速度とかあるらしいけど、こうまでしてPHPを使う必要ってあるんかなーってのが正直な感想です\_(:3」∠)\_

※この記事の執筆者の環境は PHP7.2 Phalcon 3.4.3

# Nginx + Phalcon

最初らへんルーティングはされるのにパラメータが取れねぇ(;・∀・)
ってなってました。
ちゃんとNginx側のconfに

        location / {
try_files $uri $uri/ @rewrite;
}

lo

元記事を表示

昔を思い出しながらLaravel、FuelPHP、Codeigniterを比較してみた。

こんにちは!葛山です。
今回会社でアドベントカレンダーをやろうということで僕も慣れないブログを書いてみることにしました。
業務でコードに触れることは少なくなったのですが、最近Laravelを勉強したので昔使っていたFuelPHPやCodeigniterとの比較記事を書こうと思います。

### はじめに
パーソンリンクは2011年に僕が立ち上げた会社なのですが、少人数だったので僕がPMを担当しながらプログラマーも兼務しているという状況でした。
最初はCodeigniter、2012年からはFuelPHPをメインに使っていました。

### なぜPHPなのか
僕がPMの時にPHPを採用していた理由は「人が集めやすい」からです。
開発案件は急に始まるので、その際一番苦戦するのが人員の確保です。
当時はうちのメンバーの人数も少なく、外部の方と一緒に即興でチームを組むこともありましたので(開発では割とそれがスタンダードなのかも)その際一番募集をかけやすかったのがPHPでした。

PHPはWEBアプリ開発において人気のプログラミング言語なのですが、フレームワークの種類が多すぎて何を使うべきか

元記事を表示

2019年PHPカンファレンス全国登壇行脚まとめ

本記事は、サムザップ [Advent Calendar 2019 #1](https://qiita.com/advent-calendar/2019/sumzap1) の12/09の記事です

# はじめに
2019、今年も全国でPHPカンファレンスが開催されました
参照先:[2019年に開催される全国のPHPカンファレンスのまとめ](https://qiita.com/akase244/items/d74316f6ee8fa464cfa3)

今年一年のPHPカンファレンス全国登壇を振り返ってみます

# PHPカンファレンス仙台 - 2019/1/26
会場にいってみると、スタンプラリーの台紙がありました
プログラミング概念を学ぶ

# プログラミング概念を学ぶ

現場の先輩から、概念的なことの勉強法について教えていただいたので、記事にしていこうと思います。

***オブジェクト指向*** を例に紹介していきます。

## オブジェクト指向についていきなり学ぶ前に、オブジェクト指向がなぜ必要なのかを知る!
オブジェクト指向とネットで検索すると、様々な記事が出てきます。
それらを見て、完璧に理解し、実務でも自在に使うことができればいいのですが、
大抵の方は、なんとなくわかった程度で実際に使うとなると中々難しいのではないのでしょうか。(筆者が正にそうでした。。)

そこでオブジェクト指向についていきなり調べる前に、***なぜオブジェクト指向が必要になったのか。その過程を知る*** ということをお勧めします。

いきなりオブジェクト指向が生まれた訳ではありません。
***何かしらのニーズがあってオブジェクト指向が必要になりました。***

※オブジェクト指向が必要になった訳についてはこちらのブログでとても分かりやすく説明されているので、ご参考になさってください。
[猫型プログラミング言語史観(1) 〜あるいはオブジェクト

元記事を表示

【 Laravel 6 】投稿記事を投稿者ごとに一覧表示

#【 Laravel 6 】投稿者ごとの投稿記事を取得し一覧を表示する

2019年11月から、[Laravel歴数ヶ月の初心者が投稿型ナレッジベースのコミュニティサイトを作る](https://qiita.com/AkiYanagimoto/items/216ea9549e758342baab "投稿型ナレッジベースのコミュニティサイトを作る")というチャレンジ中。作りたいアプリケーション→機能を因数分解→ググる→先人の轍をたどる(写経する)→ぬかるみにはまる→エラー解消の神を探す→解決を繰り返す日々( ·ㅂ·)و 。備忘録として、Qiitaに投稿しています。

今回は、それぞれの投稿者の投稿記事を一覧で表示させる機能を実装していきます。

##前提
全ての投稿の一覧を表示するindex.blade.phpは、[【 Laravel 6 】投稿の表示・修正・更新・削除](https://qiita.com/AkiYanagimoto/items/abc1eca888c4c3f2eb99))で、すでにできている前提です。

##投稿者の名前にリンクを貼る

```php:index.bl

元記事を表示

phpの簡易掲示板の作り方

画面表示部分を作成する

まずは、画面に表示される個所を作成していきます。

```php:index.php




PHP簡易掲示板

PHP簡易掲示板

メッセージ:
ユーザー名:

投稿一覧



```
ここまでは、ほぼほぼHTMLの内容ですので理解できると思い

元記事を表示

CakePHPのソースコードを読んでいたら、知らないメソッドの呼び出し方があった

[Fusic Advent Calendar 2019](https://qiita.com/advent-calendar/2019/fusic) - Qiita 9日目の記事です。

今回はPHPでこんなメソッドの呼び出しあるんだ?としらないことがあったので、そのことについて書いてみました。

## 知らなかった呼び出し方

CakePHPのソースコードを読んでいた時に、ここどうなってんだ?となったのがこの部分になります。
https://github.com/cakephp/cakephp/blob/master/src/Datasource/ModelAwareTrait.php#L127

### $factoryに入ってる値

```php
/src/Datasource/ModelAwareTrait.php (line 128)
[
(int) 0 => object(Cake\ORM\Locator\TableLocator) {
[protected] locations => [
(int) 0 => 'Model/Table'
]
[pro

元記事を表示

Googleドライブを静的サイトサーバとして利用する

# 0.やりたいこと
自サーバにはphpファイル1個のみを置く。
`file_get_contents(Googleドライブにアップしたhtmlファイル)`をやることで、
あたかもコンテンツを持ったサーバであるかのように扱いたい。
これができると、パソコンやスマホなどから容易にページが更新できて便利だ(ftp接続が要らない)。

# 1.課題
普通にhtmlファイルをアップしてGoogleドライブの画面から素直にリンクを取得しても、うまくいかない。2つ工夫する必要がある。
## 1-1. 課題1つ目
1つは、「Googleドライブ専用の画面」が開き、その内部でコンテンツを開いてしまうという問題。
例えば、こんな感じ。
[https://drive.google.com/open?id=1QDGsTNesm_JKLy5Tgojz70kZdPDo5cjk](https://drive.google.com/open?id=1QDGsTNesm_JKLy5Tgojz70kZdPDo5cjk)
この問題を解決するには、urlをちょっといじる。
`open`を`uc`に書き換えるだけでよい。

元記事を表示

Moodle 3.8 マニュアル - Git を使用して Ubuntu にインストールする

[原文](https://docs.moodle.org/38/en/Installation_on_Ubuntu_using_Git)

# Git を使用して Ubuntu にインストールする

内容

[1 イントロダクション](#1-イントロダクション)
[2 Ubuntu をインストールする](#2-ubuntu-をインストールする)
[3 基本セットアップ](#3-基本セットアップ)
[4 Moodle コードをインストールする](#4-moodle-コードをインストールする)
[5 データエリアを作成する](#5-データエリアを作成する)
[6 データベースを作成する](#6-データベースを作成する)
[7 apache の設定](#7-apache-の設定)
[8 Moodle のインストール](#8-moodle-のインストール)
[9 そして最後に](9-そして最後に)
[10 忘れないで](#-10-忘れないで)
[11 アップデートについてのクイックノート](#11-アップデートについてのクイックノート)
[12 トラブルシューティング](#12-トラブルシュー

元記事を表示

やらかしまくった一人プロジェクトの経験談

#はじめに

この記事は、Qiita芸人 Advent Calender8日目の記事です!

過去の経験談です。
自戒の意味も込めて書きたいと思います。

#スペック
エンジニア歴約3年
業務でのWEB開発の経験無し
C言語やC++で組み込み系や業務系の開発を2年、JavaでAndroidアプリを半年ほど。
プロジェクト参画前、PHPは事前に「独習PHP」を一通りやったくらいしか触った経験がなかった。

#当時の開発時の状況や前提についてざっくり説明
・PHPのバージョン: 5.0系
・推奨ブラウザ: IE8
・エディタ: サクラエディタ
・VPN接続
・開発環境と本番環境が一緒
・バージョン管理: 無し
・別の会社からコードの保守権限を受け取り開発の中身や知見を知ってる人が他にいない
・一人プロジェクト(一応スケジュール管理だけするなんちゃってPMがいた)

#自分がやったこと
###開発環境を整える
・Git導入
・VSCode導入

###ソースコードを一通り読んで作りをざっくり理解する
・ModelBean、ViewBeanって"bean"を多用してたので恐らく前任者がJava

元記事を表示

LaravelのAPIテストを簡単に書いて実行しよう!

#目的
APIのテストケースを簡単に実装したい(なるだけ少ないコードで!)

今回できることは get, post, putの実行とレスポンスが正常かをテストするコードが簡単に実装できるようになります。

# 基底クラス(ApiTestBase.php)を作る

`tests/Feature`以下に下記ファイルを作ります。

```ApiTestBase.php

元記事を表示

【 Laravel 6 】投稿へのタグ付け機能

#【 Laravel 6 】投稿へのタグ付け機能

2019年11月から、[Laravel歴数ヶ月の初心者が投稿型ナレッジベースのコミュニティサイトを作る](https://qiita.com/AkiYanagimoto/items/216ea9549e758342baab "投稿型ナレッジベースのコミュニティサイトを作る")というチャレンジ中。作りたいアプリケーション→機能を因数分解→ググる→先人の轍をたどる(写経する)→ぬかるみにはまる→エラー解消の神を探す→解決を繰り返す日々( ·ㅂ·)و 。備忘録として、Qiitaに投稿しています。

SNSっぽい機能の代名詞である投稿へのタグ付を実装していきます(o´艸`)

##テーブル設計

タグ機能に関するテーブル設計はこちらのサイトを参考にさせていただきました。アリガトウゴザイマス<(_ _)>

**【MySQL】タグ付け機能の実装にオススメなテーブル設計(TOXI法)その2**
**https://senews.jp/toxi2/**

postsテーブルは投稿記事を入れておく、
tagsテーブルはタグを入れる、
そして、

元記事を表示

おれおれフレームワークを作成し、フレームワークの真髄に近づいてみる!<ルーティング>

この記事は、
[ジーズアカデミー Advent Calendar 2019](https://qiita.com/advent-calendar/2019/gsacademy?fbclid=IwAR1YZtRBMRlSRIzJgnR2B0wStiSzElJ4xVFUYqJI-CU9xKc8febsPbBuH7Y)の8日目です。

#令和元年の内にPHPでオレオレフレームワーク的な何かを作るぞ!

こんにちは。
[ふくしま](https://twitter.com/MasuraoProg)です。

この記事を書く今、もう令和元年が終わろうとしています。
元年が終わる前に、初めてのPHPフレームワークっぽいものを自作してみましょう!

##そもそもフレームワークとは??

そもそもフレームワークとは何でしょうか。
『初めてのPHP』(オライリー・ジャパン)には以下のような記述があります。

一般にWeb開発を目的とするフレームワークは少なくとも次のタスクを行うーー

**ルーティング**
ユーザーがリクエストしたURLを、レスポンスを作成する役割を担う特定のメソッドや関数に変換する。

元記事を表示

PHP7技術者認定初級試験は実務で役立つのか? 「おすすめ度・難易度・勉強時間」

# PHP7技術者認定初級試験を受けてみた
私は受託開発のベンチャー企業で約1年実務を経験しています。技術力と知識量を上げるため、PHP7技術者認定初級試験を受けてみました。なので、資格で合格することが目的ではなく、**資格を受ける上で勉強で得られる知識が目的**でした。試験に合格したので、そこで得られた情報を共有します。

**この記事はこんな方におすすめ**

- PHP7技術者認定初級試験が実務に役立つのか知りたい
- おすすめ度・難易度が知りたい
- 勉強時間やおすすめの学習教材が知りたい

# 実務で役立つのか?

結論、**役に立ちません!!!笑**

理由は選択問題なので、**コードが書けなくても過去問を繰り返し勉強すれば合格してしまう内容**だからです。ただし、公式でおすすめしている認定教材の[初めてのPHP(PHP7対応版)](https://www.amazon.co.jp/dp/4873117933/)がバランスよく学べるので、「試験は微妙だけど、認定教材は良い」という感じです。「じゃあ、試験受けずに認定教材だけやればいいんだね!」と言われそうですが、明確な目標が

元記事を表示

OTHERカテゴリの最新記事