質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

1回答

181閲覧

フレームワークのメソッドの一部を上書きしたい(cakephp2系)

k_h_k_h

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2017/10/05 01:18

概要

cake2.3系の開発をしているのですが、フレームワーク由来の不具合があり、cakephpのvalidationのメソッドを上書き修正したいです。

環境

php5.3
cakephp2.3.10

該当箇所

  • cakephp2.3.10

cakephp/lib/Cake/Utility/Validation.php

php

1 public static function cc($check, $type = 'fast', $deep = false, $regex = null) { 2 if (is_array($check)) { 3 extract(self::_defaults($check)); 4 } 5 6 $check = str_replace(array('-', ' '), '', $check); 7 if (mb_strlen($check) < 13) { 8 return false; 9 } 10 11 if ($regex !== null) { 12 if (self::_check($check, $regex)) { 13 return self::luhn($check, $deep); 14 } 15 } 16 $cards = array( 17 'all' => array( 18 'amex' => '/^3[4|7]\d{13}$/', 19 'bankcard' => '/^56(10\d\d|022[1-5])\d{10}$/', 20 'diners' => '/^(?:3(0[0-5]|[68]\d)\d{11})|(?:5[1-5]\d{14})$/', 21 'disc' => '/^(?:6011|650\d)\d{12}$/', 22 'electron' => '/^(?:417500|4917\d{2}|4913\d{2})\d{10}$/', 23 'enroute' => '/^2(?:014|149)\d{11}$/', 24 'jcb' => '/^(3\d{4}|2100|1800)\d{11}$/', 25 'maestro' => '/^(?:5020|6\d{3})\d{12}$/', 26 'mc' => '/^5[1-5]\d{14}$/', 27 'solo' => '/^(6334[5-9][0-9]|6767[0-9]{2})\d{10}(\d{2,3})?$/', 28 'switch' => '/^(?:49(03(0[2-9]|3[5-9])|11(0[1-2]|7[4-9]|8[1-2])|36[0-9]{2})\d{10}(\d{2,3})?)|(?:564182\d{10}(\d{2,3})?)|(6(3(33[0-4][0-9])|759[0-9]{2})\d{10}(\d{2,3})?)$/', 29 'visa' => '/^4\d{12}(\d{3})?$/', 30 'voyager' => '/^8699[0-9]{11}$/' 31 ), 32 'fast' => '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/' 33 ); 34 35 if (is_array($type)) { 36 foreach ($type as $value) { 37 $regex = $cards['all'][strtolower($value)]; 38 39 if (self::_check($check, $regex)) { 40 return self::luhn($check, $deep); 41 } 42 } 43 } elseif ($type === 'all') { 44 foreach ($cards['all'] as $value) { 45 $regex = $value; 46 47 if (self::_check($check, $regex)) { 48 return self::luhn($check, $deep); 49 } 50 } 51 } else { 52 $regex = $cards['fast']; 53 54 if (self::_check($check, $regex)) { 55 return self::luhn($check, $deep); 56 } 57 } 58 return false; 59 }

修正内容

https://github.com/cakephp/cakephp/pull/11270/files
jcbカードのバリデーションエラーの修正を当てたいです。

php

1 $cards = array( 2 'jcb' => '/^(35\d{3}|2131|1800)\d{11}$/',

ご教示よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/10/05 01:40

変更したいのが配列の値だけなのであれば直接変更してはどうでしょうか?
k_h_k_h

2017/10/05 01:55

そうしたいんですが、git範囲内で完結する修正にしたいなと思ってまして。。。
tonkun4os

2018/09/09 02:06

自分で違うメソッド実装するしか無いですねー
guest

回答1

0

直接編集するか、自分でメソッド作ってまるまる上書きするくらいしかないんじゃないでしょうか

投稿2019/03/10 00:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問