Küresel bir yardımcı işlev yerleştirmek için nerede cepten / MVC tavsiye

1 Cevap php

Ben form verilerini işleme vardır benim sitede denetleyicileri bir çift var. Formlar AJAX kullanımı ve ben bir JSON kodlanmış biçimde hataları dönmek bazı özel işlem yapmak zorunda farklı denetleyiciler genelinde epeyce yöntemler var - bkz. aşağıdaki kodu. Açıkçası bu DRY değil ve ben küresel kullanabileceğiniz tek bir yardımcı işlevi içine bu kodu taşımak gerekir, ama bu aslında nereye gitmeli merak ediyorum! Bu kod uygulamaya özgü ve ben kullanıyorum jQuery doğrulama eklentisi haline bağlı bir biçim üretme gibi ben bu işlevi (örn. Doğrulama :: build_ajax_errors ()) içeren statik bir yardımcı sınıf oluşturmanız gerekir, ya da, bir statik olmalıdır yöntemi formu taşıma denetleyicileri uzanan örneğin, benim ana sitesi denetleyicisi, saklanır?

               //if ajax request, output errors
                if (request::is_ajax())
                {
                    //need to build errors into array form for javascript validation - move this into a helper method accessible globally
                    $errors = $post->errors('form_data/form_error_messages');

                    $i = 0;
                    $new_errors  = array();
                    foreach ($errors as $key => $value)
                    {
                        $new_errors[$i][0] = '#' . $key;
                        $new_errors[$i][1] = $value;
                        $new_errors[$i][2] = "error";
                        $i++;
                    }

                    echo '{"jsonValidateReturn":' . json_encode($new_errors) . '}'; 

                    return;
                }

1 Cevap

IMHO, soru kişisel programlama tarzı bir soruya aşağı kaynar. Ben DRY müdüre uyması amacıyla refactored gereken bir kod parçası tespit ettik, ben hep aynı şekilde refactor yoktur.

Eğer doğru anlamak, form sınıfları bu işlev / yöntem gerekir, ve bu formu sınıflarının tüm aynı temel form sınıfı genişletmek. Bu durumda, ben "küresel" Ben size kullanılabilir olmasını yöntemi istediğini belirtti biliyoruz (üst sınıfında içine söz yöntemini tanıtmak istiyorum ama kullanımı durumda kalan fonksiyonu / yöntem yalnızca olacağını ima gibiydi Form sınıfları kullanılır.).

Ben aslında uygulama boyunca mevcut gerekir (ve bunu koymak için başka hiçbir yerde emin değilim için) bir yardımcı işlevi varsa, ben uygulamanın giriş noktası yerleştirin. Zend Framework MVC kullanarak, bu giriş noktası kamu index.php (tüm istekleri küresel işlevleri için mantıksal adrestir, index.php yönlendirilir) olacaktır. Ayıklama sırasında bu dosyanın altındaki Kendime hep bazı yazarak kazanmak için bazı yardımcı işlevler eklemek. "The most useful function you will ever use . . .", örnek olarak bkz.