PHP関連のことを調べてみた

PHP関連のことを調べてみた

ループメニュー1を解いていく3

https://paiza.jp/works/mondai/loop_problems/loop_problems__seq_multi

### Python
“`py
N = int(input())
A = [int(i) for i in input().split()]
for i in A:
print(i * 2)
“`
### PHP
for文で、要素数−1しているのは
0から数えるので、
0,1,2,3,4で要素5個だけど、−1して4までにする必要があるからですね
Pythonと違うので注意したいところです
まあこの部分は$N-1 でもよいのですが

“`php

“`

https://paiza.jp/works/mondai/loop_problem

元記事を表示

laravel クライアントのIPアドレスを取得するヘルパ関数を書いてみる

## 概要

`$request->ip()`でIPを取得すると、ダイレクトにクライアントからサーバーにアクセスされている場合は問題ないが、リバプロやロードバランサーなどがあると「サーバー到達直線のリソースのIP」が取れてしまう。クライアントのIPを取得したい場合の処理を考えてみた。

## 注意

本内容は完璧ではない可能性があります。何なりとご指摘いただければと思っております。

## 処理

下記のような処理を考えてみた。今回は独自ヘルパ関数として登録している。

“`helpers.php
if (!function_exists(‘getClientIp’)) {
function getClientIp(): array
{
$forwardedFor = request()->headers->get(‘X-Forwarded-For’);
$realIp = request()->headers->get(‘X-Real-IP’);
$clientIp = null;
$isClientI

元記事を表示

ループメニュー1をやっていく3

https://paiza.jp/works/mondai/loop_problems/loop_problems__seq_sum

Python

“`py
N = int(input())
A = list(map(int, input().split()))
# 下記でもOK
# A = [int(i) for i in input().split()]
sum = 0
for i in A:
sum += i

print(sum)
“`
PHP
“`php

“`

https://paiza.jp/works/mondai/loop_problems/loop_problems__seq_partsum

各言語の挙動

元記事を表示

【PHP】setcookieでPartitionedを発行したい場合はどうすればいいか

# サードパーティCookieについて

サードパーティCookieは2024年以降、[基本的に禁止されます](https://qiita.com/rana_kualu/items/16383af7f6f56f6e982e)。

この理由の大きなひとつが、サイトAとサイトBの情報を紐付けされてしまうことです。

![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/62e51047-c5a7-4e0f-7ada-4ac41b971c37.jpeg)

※画像出典:[Chrome 114 の新機能](https://developer.chrome.com/blog/new-in-chrome-114?hl=ja)

`tracking.com`は`a.com`上でのあなたの動きを監視することができますし、`tracking.com`は`b.com`上でのあなたの動きを監視することができます。
そして`tracking.com`は、`a.com`と`b.com`の情報を紐付けることが可能です

元記事を表示

良いコード悪いコードで学ぶ設計入門を読んで(その②)

# 前置き
今年の目標に小規模~中規模のリファクタリングができるようになることを設定しました。前回は1章で悪い構造の弊害を纏めました。2章の内容を纏めます。

## 2章 設計の初歩
– 省略せず意図が伝わる名前を設計する

“`unknown_logic.php
int $d=0;
$d=$p1+$p2;
$d=$d-(($d1+$d2))/2);
if($d<0){ $d=0; } ``` まったく意味が分からない。私も実務時foreach文内でほぼ同じものを見たことがあるので親近感感じる。 このコードの変数名を適切に記述すると・・・ ```rename_value.php int $damageAmount=0; $damageAmount=$playerArmPower+$playerWeaponPower; $damageAmount=$damageAmount-(($enemyBodyDefence+$enemyArmorDefence))/2); if($damageAmount<0){ $damageAmount=0; } ``` 実はゲームのダメージ

元記事を表示

JS (php smarty内 .tpl 記述) セレクトボックス、テキストボックス制御

## ■完成イメージ
・セレクトボックス入力可 、テキストボックス入力不可
![スクリーンショット (909).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/5d936710-fe1a-5cf6-0019-d8581b8a2b8c.png)

・セレクトボックス入力不可 、テキストボックス入力可
![スクリーンショット (910).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/39f14355-5018-9b6d-9a43-8ecf9a796baa.png)

## ■機能説明
・セレクトボックスに値が入っている場合は、テキストボックスは入力不可。

・セレクトボックスが「未選択(値がない)」の場合、テキストボックス入力可、かつテキストボックスへ文字が入っている場合は、セレクトボックス選択不可。

## ■ソースコード
“`JS main.js
document.addEventListen

元記事を表示

ループメニュー1をやっていく2

https://paiza.jp/works/mondai/loop_problems/loop_problems__rep_num_step1

Python
“`py
for _ in range(8):
print(3)
“`
PHP
Pythonと違うので未だに改行コードを入れないといけないことを忘れます汗
あと、改行コードは’’だとだめで””でないと展開されないみたいです

“`php

“`
https://paiza.jp/works/mondai/loop_problems/loop_problems__rep_num_step2

Python

“`py
N, K = map(int,input().split())
for _ in range(K):
print(N)
“`

PHP
“`php

元記事を表示

ざっくりとわかりやすくSOLID原則を学ぶ

## はじめに
社員の皆さんはこんな奴が最近エンジニアになって頑張ってるんだなと暖かい目で読んでいただければと思います。

社外の方やエンジニアを目指している方は少しでも学習の参考や、コネクター・ジャパンに興味を持っていただければと思います。

## 自己紹介
未経験から独学でプログラミング学習し5ヶ月でLaravelでポートフォリオを作成しました。そして現在は自社開発企業に入社し、WEBエンジニアとしてプロダクト開発に携わっています。

## この記事を書いた理由
エンジニアなりたての初心者の頃は、コードがごちゃごちゃになりがちでした。
しかし、オブジェクト指向の基本原則であるSOLID原則を学ぶことで、すっきりとしたコードを意識して書くようになりました。

オブジェクト指向は、うまく扱うことが出来れば保守性が上がり、修正対応や機能を新しく追加する時などに楽に対応できるようになります。

つまりコードの品質を保ちやすくなるんですよね。

しかしなかなか理解が難しいので、今回は私なりにプログラムをきれいに保つための「SOLID原則」を、初心者の方でも理解しやすいようにわかりやすい言葉で

元記事を表示

個人メモ

まとめ

[名前空間(自分用メモ)](https://qiita.com/imokenpi/private/1e73234de4621d484d1a “名前空間(自分用メモ)”)

[クラス(自分用メモ)](https://qiita.com/imokenpi/private/29b2a36a2c9884b0a118 “クラス(自分用メモ)”)

[HTTP通信GET・POST(自分用メモ)](https://qiita.com/imokenpi/private/a31468af84f722c59ec5 “HTTP通信GET・POST(自分用メモ)”)

[データ型の宣言とstrictモード](https://qiita.com/imokenpi/private/f67aaff774c455e5ee25 “データ型の宣言とstrictモード”)

[issetとempty](https://qiita.com/imokenpi/private/9102cc4f10bb69c99212 “issetとempty”)

元記事を表示

PDOでデータベースにアクセス

PHPでDBに簡単に接続できるPDOというものを使ってデータベースにアクセスします。
MANPを起動させphpMyAdminにアクセスしてDBを作ります。

## データベース用アカウントの作成
まず初めにデーターベースにアクセス可能なアカウントを作成していきます。
phpMyAdminのトップページにアクセス→上のタブのDataBaseをクリック→アカウントを追加したいデーターベース欄の権限をチェックする→画面下の方にあるユーザーアカウントを作成するをクリックします。

ユーザー名を入力→ホスト名をローカル→パスワードを入力→もう一度入力→権限の付与の選択→実行で完了です

## アカウントを使いDBを扱っていく
ここからコードを書いていきます。やっていきます。
“`php
$dns = ‘mysql:host=localhost;dbname=study;charaset=utf8’;
$name = ‘user’;
$pass = ‘password’;

try{
//データベース、ユーザー名、パスワードから接続をする
$dbh = new PDO($dns,

元記事を表示

Laravel Macroを使ってみる

# 環境
Laravel10(sail)
https://readouble.com/laravel/10.x/ja/installation.html
↑↑この通りにやればサクッと環境が作れる

Mac
Apple M1 Max
sonoma 14.2.1

# Macroとは?

> A “macro” in Laravel refers to the ability to add additional methods or features to various classes or framework components without altering the original source code.
>
> Laravel’s macro feature enables developers to enhance the capabilities of fundamental Laravel classes such as Eloquent models, collections, query builders, and others.

Laravel の「マクロ」

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~AOP編~

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/77048e47018e602870d1)の記事で参照可能なファイルの扱いについてまとめました。
今回はFlowにおけるAOPの実装についてまとめます。

# (ざっくりと)AOPとは
ざっくりとAOPとは何かを説明します。(「知ってるよ」って方はスキップ推奨ですmm)
chatGPT様に説明をお願いしました(丸投げ)。

> AOP(Aspect-Oriented Programming)は、プログラム内の共通な機能(ログ記録、エラーハンドリングなど)を取り出して、それらを別のモジュールとして管理するプログラミング手法です。これにより、コードがよりシンプルで保守しやすくなります。アスペクトと呼ばれるモジュールが特定の機能を担当し、アドバイスと呼ばれる処理がコードに挿入されるポイントを指定します。 AOPは特に大規模なソフトウェアプロジェクトで有用です。

まとめると『**似たような処理はまとめて、自動で実行されるようにしようね**』ってことですね。

## AOPの例
あるプロジェクトで、*

元記事を表示

【PHP】MySQLに接続する方法(mysqli)

この記事では、MySQLにPHPから接続する方法、そしてSQL文を実行する方法を紹介します。

# 注意

この記事には、コード内には**おかしいコメントが**、コード外には**おかしい文章が**書いてあります。
笑わないように**十分に警戒してください**。

そして、この記事ではPHPのモジュールでmysqliが有効化(コメントアウトされていない状態)されていることを前提としています。

# やっていこう

テレレッテッテ、テレレッテッテ、テレレッテッテッテッテ!
PHPクッキングのお時間です。
今回は、「PHP」に、「MySQL」というご馳走を食べさせるために、「MySQL」を作っていこうと思います。

まずは、PHPソースを1つと、プログラムエディタを1つ用意します。
おすすめのプログラムエディタは、VSCodeです!

まず、お好みのPHPソースを用意して、以下のソースをトッピングします!

“`php:接続.php

# 製品情報(接続情報)を入力

$mysqli = new mysqli(“発売元(正式には接続先)”, “生産者(正式にはユーザー名)”, “MySQL

元記事を表示

Oracle plsql ,PDFがアップデートされたかチェック 02

## ■環境
・PHP7.4
・Linux(RedHat 8.6)
・Smarty2.4.6
・oracle12
・PLSQL
## ■完成イメージ
1:アップロード
![スクリーンショット (904).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/0b5d64a5-4755-3a57-b089-263d5abd53c2.png)
2:アップロード後
![スクリーンショット (908).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/9b2b4c49-3fbd-f57d-4da1-bbdc569b393c.png)

## ■機能説明
### 機能
・PHPから plsqlのプロシージャを呼び。
・プロシージャで、一時テーブル(テンポラリーテーブル)へPDFのアップロード情報を格納。
・PHPでプロシージャの一時テーブルの情報をSELECTして、配列へ格納。
・.tplで配列とのチェックを行う。

元記事を表示

Testlink : テスト進捗をグラフ化する

Testlink の DB に記録されたテスト実施データからグラフを生成する手順について解説します。

# Testlink DB のアクセス

まず Testlink DB に接続する必要があります。
Testlink Root の config_db.inc に Testlink Database への接続情報が記載されています。

“`config_db.inc.php

“`

# グラフ化手順

テストの実行結果は Testlin

元記事を表示

ループメニュー問題を解いていく1

https://paiza.jp/works/mondai/loop_problems/loop_problems__print_num_step1

python
“`py
for i in range(10):
print(i+1)
“`
PHPは仕方ないけど行数多くなってしまうな

“`php

“`
じゃ次

https://paiza.jp/works/mondai/loop_problems/loop_problems__print_num_step2

python
“`py
for i in range(int(input())):
print(i+1)
“`
PHPだと、pythonのように直接入れ込む、ということはできないようです。
つまり下の`$i<=$N`の部分を`$i<=fgets(STDIN)`のようにはできないようです。 何故か調べてますがなかなかそれらしきものは見つからず。 仕方ないのでこ

元記事を表示

Amazon Linux 2023 で PHP Redis エクステンションをコンパイルする

Graviton な Amazon Linux 2023 で PHP8.2 を利用しています。

ElastiCache の Redis でセッションを使いたいと思ったんですが、2024年1月時点で、Amazon Linux 2023 のレポジトリには用意されていませんでした。

いろいろ頑張って調べましたが、自分でコンパイルしたほうが良さそうです。

ということで、コンパイルしてみました。

## 前提条件

すでに他の PHP 8.2 本体やエクステンションはインストールされていると想定

## STEP 1. GitHub に機能要望を送る

GitHub の機能要望の[該当 Issue](https://github.com/amazonlinux/amazon-linux-2023/issues/328) がまだオープンだったら、 “I want it too!” とコメントをする

コンパイルしたくない!

## STEP 2. コンパイルツールをインストールする

php-devel, gcc, make や git をインストールする

“`
sudo dnf ins

元記事を表示

【Laravel】外部キー制約を追加したテーブルでシーディングをするとエラーが発生する

## きっかけ
シーディングを行ったら、SQLのエラーが発生した。詳細は以下の通り。
### 作業手順
1. Usersテーブルの`ID`カラムとTweetsテーブルの`user_id`カラムを関連づけるために、Tweetsテーブルの`user_id`カラムに外部キー制約を付ける。
2. UsersテーブルとTweetsテーブルのシーディングを実行する。
(以下のようなデータをTweetsテーブルに格納する。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/505b9694-8c33-7736-9878-6bf97a1bae81.png)

### エラー
“`
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails(`example_app`.`tweets`, CONSTRAINT `t

元記事を表示

積の最小化

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_boss

前回の問題を教訓に
どちらかが0の場合は問答無用に0が最小になるので
こんな感じで書いてみました。
つまり、最初の数値を基準に、小さくなったらそれを採用するみたいな感じですね。
で、A~Bの間をループさせると。負の数が含まれていても結局あんまり関係ないなということで
こうなりました。

“`py
A,B = map(int,input().split())
result = 0
for i in range(A,B+1):
for j in range(A,B+1):
if A == 0 or B == 0:
break
if result == 0:
result = i * j
elif result > i * j:
result = i * j

print(result)
“`
でも解答の場合は、もうちょっとロ

元記事を表示

タイルの敷き詰め

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step8

“`py
H,W = map(int,input().split())
if H > 0 and W > 0:
if H % 2 == 0 and W % 2 == 0:
print(‘YES’)
else:
print(‘NO’)
else:
print(‘NO’)

“`

最初は最初のif文なかったんだけど、
テストケースでHやWが0だったときにこれだめなんですよね。
で最初のif文を付け加えたら正解になりました。

ちなみに、上のは入れ子になってますが、最初のif文を逆にしたらelseがいらなくなります。
(ということに今気づいた)
ただし、この場合、andだとだめでorにしないとどちらかが0の場合にNoにならないです。

“`py
H,W = map(int,input().split())
if H == 0 or W == 0:

元記事を表示

OTHERカテゴリの最新記事