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

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

ただいまの
回答率

90.51%

  • PHP

    20408questions

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

  • CakePHP

    2316questions

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

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

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 191

k_h_k_h

score 11

 概要

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

 環境

php5.3
cakephp2.3.10

 該当箇所

  • cakephp2.3.10

cakephp/lib/Cake/Utility/Validation.php

    public static function cc($check, $type = 'fast', $deep = false, $regex = null) {
        if (is_array($check)) {
            extract(self::_defaults($check));
        }

        $check = str_replace(array('-', ' '), '', $check);
        if (mb_strlen($check) < 13) {
            return false;
        }

        if ($regex !== null) {
            if (self::_check($check, $regex)) {
                return self::luhn($check, $deep);
            }
        }
        $cards = array(
            'all' => array(
                'amex'        => '/^3[4|7]\\d{13}$/',
                'bankcard'    => '/^56(10\\d\\d|022[1-5])\\d{10}$/',
                'diners'    => '/^(?:3(0[0-5]|[68]\\d)\\d{11})|(?:5[1-5]\\d{14})$/',
                'disc'        => '/^(?:6011|650\\d)\\d{12}$/',
                'electron'    => '/^(?:417500|4917\\d{2}|4913\\d{2})\\d{10}$/',
                'enroute'    => '/^2(?:014|149)\\d{11}$/',
                'jcb'        => '/^(3\\d{4}|2100|1800)\\d{11}$/',
                'maestro'    => '/^(?:5020|6\\d{3})\\d{12}$/',
                'mc'        => '/^5[1-5]\\d{14}$/',
                'solo'        => '/^(6334[5-9][0-9]|6767[0-9]{2})\\d{10}(\\d{2,3})?$/',
                '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})?)$/',
                'visa'        => '/^4\\d{12}(\\d{3})?$/',
                'voyager'    => '/^8699[0-9]{11}$/'
            ),
            '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})$/'
        );

        if (is_array($type)) {
            foreach ($type as $value) {
                $regex = $cards['all'][strtolower($value)];

                if (self::_check($check, $regex)) {
                    return self::luhn($check, $deep);
                }
            }
        } elseif ($type === 'all') {
            foreach ($cards['all'] as $value) {
                $regex = $value;

                if (self::_check($check, $regex)) {
                    return self::luhn($check, $deep);
                }
            }
        } else {
            $regex = $cards['fast'];

            if (self::_check($check, $regex)) {
                return self::luhn($check, $deep);
            }
        }
        return false;
    }

 修正内容

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • mts10806

    2017/10/05 10:40

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

    キャンセル

  • k_h_k_h

    2017/10/05 10:55

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

    キャンセル

  • tonkun4os

    2018/09/09 11:06

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

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20408questions

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

  • CakePHP

    2316questions

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