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

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

「暗記」ダメ!!!! 絶対!!!!それって本当ですか?

#暗記ってダメなの?

学習をしていく中で1度は耳にする

**「暗記」はダメ**

といった論調があると思います

最初に結論を言っておくと私はこの記事で
**暗記を全て否定するのではなく、拾ってくる情報リソースの多くで頻出している「単語」や「概念」は暗記しましょうね。**と伝えたいです。

#私の背景
半年前の私は

**・HTMLって何
・PHP何それ弱そう
・プログラミング=ホームページを作る事でしょ?**

といったようにプログラミングに関してほとんど無知の状態でした。
今では半年間毎日1日8時間の学習を継続しているので、そんなふざけた状態ではないですが、当時は間違いなく全くの初学者でした。

私は初学者だった当時スクールに通うことはせずネットのPHP教材を購入し独学をはじめました。

少し話がそれますが、この半年でオンラインなどの交流会でスクールを卒業された方の話しを10人前後聞いてきたのですが、その方々の満足度は大変高い印象でした。ただし、接頭辞的な感じで、「挫折しない為には」いいですね。といった言い回しをされる方が多い印象でした笑

私も半年間独学をしてきた経験と周

元記事を表示

PHPでコードを書いていたら突如画面が真っ白になった時の話し

# はじめに

釣りみたいなタイトルですがパソコンの不備などで起きた事象ではなく、しっかりとプログラミングを書いてエラーが発生した事で起きた現象です。笑

#原因
結論から申しますと、
この現象の原因は、**exit文を記述する位置に問題がありました。**

エラー内容は以下の通り日本語にすると
「fetchというメンバー関数はありません」と怒られています。
(おそらく当時のコードはexit文の後にDB操作をしていたのでしょう)

“`
Fatal error: Uncaught Error: Call to a member function fetch() on bool in
階層フォルダ\階層ファイル Stack trace: #0 {main} thrown in
階層フォルダ\階層ファイル on line 21

“`

#exit文とは
スクリプトを強制終了させる文です。

“`
exit;//処理の終了
exit (‘ここで終了’);//処理の終了
exit (0);//処理の終了
“`

exit文は、スクリプトの処理を「exit;」と記述した箇所で終了さ

元記事を表示

Moodle 3.9 – 質問

[原文](https://docs.moodle.org/39/en/Questions)

質問は、クイズで使用するためにMoodleで作成できます。

#[質問の種類](https://docs.moodle.org/39/en/Question_types)

[計算済み](https://docs.moodle.org/39/en/Calculated_question_type)
[単純計算](https://docs.moodle.org/39/en/Simple_calculated_question_type)
[テキストにドラッグアンドドロップ](https://docs.moodle.org/39/en/Drag_and_drop_into_text_question_type)
[マーカーをドラッグアンドドロップします](https://docs.moodle.org/39/en/Drag_and_drop_markers_question_type)
[画像にドラッグアンドドロップ](https://docs.moodle.org/39/en/Drag_and_

元記事を表示

[Codewars] Find the odd int

## 概要

Codewarsの問題 `Find the odd int`の回答の復習とベストプラクティスをまとめる個人メモです。

## 問題文

> Given an array of integers, find the one that appears an odd number of times.
There will always be only one integer that appears an odd number of times.

整数の配列の中から奇数回出現する数値を求める。


findIt([20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5]);

### 自分の回答

二重ループを行い出現した数だけ変数を増加させ、2で割り切れるかどうかチェックしました。

“`php
function findIt(array $seq) : int
{
$count = 0;
for($i=0; $i

元記事を表示

[PHP]codeIgniterのUpdate機能[初心者向け]

codeIgniterの公式ドキュメントには、チュートリアルが掲載されていますが、「投稿機能」、「参照機能」の作り方しか記載されていません。WEBアプロケーションを作成する際、[CRUD](https://wa3.i-3-i.info/word123.html)(クラッド)操作が基本となりますが、codeIgniterの公式チュートリアルでは、Delete機能(消去機能)とUpdata機能(更新機能)の作り方が記載されていません。また、codeIgniterと言うフレームワークは、技術的な記事が少なく、多くのユーザーが公式ドキュメントを見て様々な機能を作成していると思います。ただ、codeIgniterの初心者が公式ドキュメントを参考にしてDeliteとUpdate等の機能を作成するのは、かなりハードルが高いと感じました。(筆者も凄く苦労しました。)

今回は、codeIgniterの初心者である筆者が、備忘録も兼ねてUpdate機能の作成方法をご説明します!

**※公式チュートリアルのアプリが作成できている前提で話しを進めます**

deletek機能の実装方法は下記から閲覧でき

元記事を表示

PHPの継承について(extends,abstract編)

開発をする上で疎結合(そけつごう)なコードで書くことは重要です。
そこで、今回はphpの継承(抽象化)のextendsとabstractについて簡単にまとめようと思います。

簡単な図↓

![名称未設定のノート-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620608/574de7c3-5023-3567-179c-0a328f126f58.jpeg)

# 1.クラスの継承 (extends)について
継承では、親クラスのメソッドを上書きすることができます。
継承する基のクラスをスーパークラス(もしくは親クラス)、継承して新たに作られるクラスをサブクラス(もしくは子クラス)と呼びます。
###【構文】

“`
class サブクラス名(子クラス) extends スーパークラス名(親クラス)
{
}
“`
1.スーパークラス名の後にextends をつけて、継承させたいクラス名を書く
2.継承したクラスとメソッド(関数)の名前が重なっていたら、サブクラス側を優先する(上書き(オーバーライ

元記事を表示

【中編】MENTA使ってメンターと開発なう

こんちわ!

モデリングとDB設計にかなりてこずりました。。。。。

ーーーーーーーーーーーーーー
【開発手順】
1)画面デザイン(ワイヤーフレーム)    (8〜10h)
✔︎Figma 画面遷移図作成

2)画面デザインからhtmlコーディング  (15h〜20h)

3)ワイヤーフレームからモデリング(情報設計)とDB設計 (7h)
✔︎Figamで機能設計図作成
✔︎spreadsheetでテーブルレイアウト作成
✔︎モデリングをgoogleスライド書き出し
✔︎ER図をDraw.ioで作成

4)URL設計 (1h~1.5h)
✔︎spreadsheetで設計

5)htmlをlaravelに組み込み ←NOW
6)DBへ永続化するなど、処理をlaravel内に作成
7)テスト
8)デプロイ
ーーーーーーーーーーーーーーー

3)ワイヤーフレームからモデリング(情報設計)とDB設計
[参考URL]

<<4ステップで作成する、DB論理設計の手順とチェックポイントまとめ>>
https://qiita.com/nishina555/i

元記事を表示

PHP 8 で導入される Attributes 事始め

## Attributes とは

紆余曲折[^1]ありましたが、 PHP 8 で `Attributes` という機能が提供されることが決まりました。

[^1]: [PHP7.1 で導入しようとした](https://wiki.php.net/rfc/attributes)けど採択されなかったり、 `@@Attr`, `<>` など様々な記法が入れ代わり立ち代わり採択されて、alpha/beta 段階ではそれぞれのバージョンで異なる実装がなされていました。

この `Attributes` とは、

– Java で言う `Annotations`
– C#, C++, Rust, Hack で言う `Attributes`
– Python, JavaScript で言う `Decorators`

を指します。つまりどんなコードかというと、下記です。

“`php
return
// ↓コレ
#[Get(‘/’)]
fn() => [‘Hello’ => ‘World’];
“`

記法はPHP7以下では行コメントとみなされるので、シンタックスハイライトで強調は

元記事を表示

【個人開発】Twitterのツイートをタグ付きでブックマークできるWebサービスを作りました

orange_alien([@_orange_alien_](https://twitter.com/_orange_alien_))です。プロのITエンジニアではありません。

個人開発でWebサービスを作ったので、サービスの概要や開発時に得た知見などを書いていきます。

# 作ったWebサービスの概要
Twikmark(ツイックマーク)
[https://twikmark.com/](https://twikmark.com/)
※サービス名の由来は「Twitter」 + 「Bookmark」 = 「Twikmark(ツイックマーク)」です

Twitterのツイートをタグ付きでブックマークすることができます(利用は無料)。
保存したいツイートのURLとタグ(任意)を入力して「ブックマーク」ボタンを押せばブックマーク完了です。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/773453/e6e846a3-1425-8cc4-f68b-441e183f8cfe.png “Twikmar

元記事を表示

Laravel 6.xでのメール認証機能導入後のBladeテンプレートの分岐処理

## 背景

Laravel 6.x LTSを使っていて、以下の手順でメール認証機能を導入した。

* [認証 6\.x Laravel](https://readouble.com/laravel/6.x/ja/authentication.html)

導入した後、Bladeテンプレート側に書いてた `@auth` や `@guest` をメール確認済みかどうかで分岐させたいとき、どう書けばいいんだろうか? となった。ドキュメントには特に何も書かれていなかったので自分で実験して調べてみた、という記録。

※なお執筆時点で最新のLaravel 8.xはまた全然違うものになってるようなので、これはあくまでもLaravel 6.x向けであることを最初に補足しておく。でも6.xはLTSなのでしばらくは有用なはず……。

## まず結論

元の記述
※`resources\views\layouts\app.blade.php` などにも最初からある記述

“`php
@guest
// 未ログイン状態の処理
@else
// ログイン状態の処理
@endguest
“`

修正

元記事を表示

ECS Ubuntu 18.04上にPHPでMemcachedサーバを設定する

このガイドでは、**ECS Ubuntu 18.04**インスタンス上に**Memcached**サーバを設定し、PHPコード上で**Memcached**サーバを使用して操作を高速化する方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-set-up-memcached-with-php-on-ubuntu-18-04_595628)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
始める前に、以下のものがあることを確認してください。

– Alibaba Cloudアカウント。サインアップは無料です。[Alibaba Cloudアカウント](https://www.alibabacloud.com/ja/referral?referralCode=1bgh7r)を作成して、50以上のAlibaba Cloud製品をテストするための最大1200ドル相当の無料トライアルをお楽しみください。
– オペ

元記事を表示

mixhost上でPHP Warning: Cannot modify header informationが発生した場合の対処

【背景】レンタルサーバーmixhost上のphp環境で”twitteroauth”を使用しtwitter認証を実施

【問題】PHP Warning: Cannot modify header information – headers already sent by(output started at /home/xxxxxx/public_html/xxxxx/twitter-login/login.php:8) が発生
※2箇所で発生し、いずれもheader()指定

【対応】下記サイトを参考に対応実施
[「Warning: Cannot modify header information…」エラーの解決方法[PHP]](https://kotori-blog.com/php/cmhi_error/)

●mixhostの”MultiPHP INI Editor”の”編集モード”で”output_buffering = 4096″を設定

![phpini.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

Moodle 3.9 – テキストの編集

[原文](https://docs.moodle.org/39/en/Editing_text)

コースのビジュアルコンテンツの一部であるテキストを編集または作成する通常の方法は、[テキストエディタ](https://docs.moodle.org/39/en/Text_editor)を使用することです。Moodleのデフォルトのテキストエディタは、[Attoエディタ](https://docs.moodle.org/39/en/Atto_editor)として知られています。プレーンテキストエディタとともに、人気のある[TinyMCEエディタ](https://docs.moodle.org/39/en/TinyMCE_editor)も利用できます。その他のオプションについては、[テキストのフォーマット](https://docs.moodle.org/39/en/Formatting_text)を参照してください。
管理者は、サイト管理のテキストエディタ領域から、有効にするエディタと無効にするエディタを決定します。
個々のMoodleユーザーは、管理者によって許可

元記事を表示

Laravel簡単ログイン機能に関する記事が少なかったので投稿してみた。

# はじめに
Laravelのポートフォリオ制作の過程において簡単ログイン機能の記事が少なく、(Railsの簡単ログイン機能の記事は山ほどあった。。笑)
個人的には参考にできる記事がなかったので、もしLaravelでポートフォリオ制作に おいてこの機能についてお役に立てたら幸いです。
# ※注意点
ポートフォリオを見て頂く方のストレスを軽減する事を優先ているため、セキュリティに関しては一切考慮していないので予めご了承ください。

# 開発環境
Laravel 6.18.40
PHP 7.3.11
Mysql
MacOS

# ゲストユーザーデータをDBに登録する
Laravelのインストール時にデフォルトで用意されているDatabaseSeederクラスを変更。

※insertする値は自分で設定してください※

(例)
‘name’ => ‘ゲストユーザー’,
‘email’ => ‘aaabbbccc@’,
‘password’ => ‘aaabbbccc’,

“`

元記事を表示

Laravel目的別逆引き(予定)

Railsでポートフォリオ作ってたけど転職先候補でLaravelを求められそうだったので学習中です。
### CRUDを作成したい
#### ビューを作りたい
#### Bladeについて
> 統一感のあるデザインでレイアウトするための機能として
> 継承と
> セクションがあります。

#### 継承
> 継承元にはない要素を用意するだけで良くなる

#### セクション
> レイアウト内に用意されている区画

###### ディレクティブ
“`php
@section( 名前 )
/*表示内容*/
@endsection
“`
“`php
@yield( 名前 )
“`
> @yieldは配置場所を示している

###### コンポーネント

> ヘッダーやフッターなど部品化
> componentsフォルダに入れる

###### ディレクティブ
“`php
@component( 名前 )
{{–コンポーネントの表示内容–}}
@endcomponent
“`
###### スロット
> コンポーネントの変数に値を入れるなど

“`ph

元記事を表示

Laravel メール自動返信機能 フォーム多重送信防止!

Laravelでメール自動返信機能のついた、お問い合わせフォームを作成してる時に発生した出来事を記事にするぞ!

・多重送信ができることが発覚した時のワイ(・o・)//WRYYYYYYYY(Dio)

・多重送信が発生する条件 = 送信ボタン連打

“`
//DB保存処理&完了画面表示
public function complete(Request $request){
//DBに保存
$contact = new Contact;
$contact->name = $request->name;
$contact->email = $request->email;
$contact->body = $request->body;
$contact->save();

//メール自動返信の奴
$sendData = $request->all();
\Mail::to($sendData[‘email’])->send

元記事を表示

CodeIgniterでエラーページを良い感じに構築したい

# 環境
PHP7
CodeIgniter 3.1.11

# 概要
CodeIgniterで404ページを編集する場合は、デフォルトでは以下のファイルを編集することになるかと思います。

`application/view/errors/html/error_404.php`

ただ、これでちょっとした不都合があります。

サイトが下図のような構成とします。
![プレゼンテーション1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241128/f2450f66-306f-c120-2201-6275173e413d.jpeg)

エラーページは以下のように表示したいとします。
![プレゼンテーション12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241128/83d24e0a-3c7b-f421-6390-97f59666f446.jpeg)

そうすると、前述のエラーページ用のファイルにヘッダーから何から

元記事を表示

docker内にてマイグレーション時にエラーが出て詰まった話 PHP laravel

#docker内にてマイグレーション時にエラーが出て詰まった話 (laravel)
以下エラー内容です

“`terminal:terminal
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = db_name and table_name = migrations and table_type = ‘BASE TABLE’)

at /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we’ll format the e

元記事を表示

CodeIgniter3 + PHPUnit 9.4.0 + ci-phpunit-test dev-2.x を利用した Unit Test環境の整備

# 概要

最近少しずつPHPの勉強を進めていまして、CodeIgniter3のフレームワークを利用した、
ちょっとしたWebアプリを練習で構築中です。
個人的にはJavaが得意なのですが、Javaのときには自然と作っていたテストクラスを、PHPでもそろそろ作りたいなと思って、見つけたのが`ci-phpunit-test`でした。

今回その環境を構築して、単純なテストを1つだけ作って確認するまでをまとめました。
※PHPUnitが9.4.0と最新バージョンになっていることで、非常に環境構築に苦労がありましたので、その辺の右往左往など解決に至るまでダラダラと時系列にメモとして残しています。

# PHPUnitのセットアップ

まずはPHPUnitのセットアップです。
ここでは、composerを利用してphpunitを現在構築中のアプリケーションにセットアップしていきます。

アプリケーションのルートフォルダは`/var/www/html/codeiogniter3`としていますので、基本的にはここをルートとして作業を進めていきます。

“`shell-session
# cd /

元記事を表示

WindowsのPHP7.4.4にSQLServerのドライバを入れる方法

1. [microsoft.com](https://docs.microsoft.com/ja-jp/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15)からWindows用のドライバを落としてきて適当な場所に展開する
2. コマンドプロンプトで`php -r “phpinfo()” > phpinfo`する
3. 上記で吐き出した結果を`Thread`で検索、Thread SafeかUnSafeか調べる
4. 落としてきたドライバからバージョンとThreadが合うものを探して`php\ext`に配置
5. `php.ini`の`Dynamic Extensions`セクションに次のような感じで記述

“`ini
# php_と.dllは勝手に補完される
extension=pdo_sqlsrv_74_ts_x64
extension=sqlsrv_74_ts_x64
“`

6. `php -r “phpinfo()” > phpinfo`して`sqlsrv`が確認できたらOK

元記事を表示

OTHERカテゴリの最新記事