Zend Framework の紹介

 Learning Zend Framework

appendix

 Zend Framework リファレンス


  • 第36章 Zend_Gdata
  • 第37章 Zend_Http
  • 第38章 Zend_InfoCard
  • 第39章 Zend_Json
  • 第40章 Zend_Layout
  • 第41章 Zend_Ldap
  • 第42章 Zend_Loader
  • 第43章 Zend_Locale
  • 第44章 Zend_Log
  • 第45章 Zend_Mail
  • 第46章 Zend_Markup
  • 第47章 Zend_Measure
  • 第48章 Zend_Memory
  • 第49章 Zend_Mime
  • 第50章 Zend_Navigation
  • 第51章 Zend_Oauth
  • 第52章 Zend_OpenId
  • 第53章 Zend_Paginator
  • 第54章 Zend_Pdf
  • 第55章 Zend_ProgressBar
  • 第56章 Zend_Queue
  • 第57章 Zend_Reflection
  • 第58章 Zend_Registry
  • 第59章 Zend_Rest

  • 第60章 Zend_Search_Lucene
  • 第61章 Zend_Serializer
  • 第62章 Zend_Server
  • 第63章 Zend_Service
  • 第64章 Zend_Session
  • 第65章 Zend_Soap
  • 第66章 Zend_Tag
  • 第67章 Zend_Test
  • 第68章 Zend_Text
  • 第69章 Zend_TimeSync
  • 第70章 Zend_Tool
  • 第71章 Zend_Tool_Framework
  • 第72章 Zend_Tool_Project
  • 第73章 Zend_Translate
  • 第74章 Zend_Uri
  • 第75章 Zend_Validate
  • 第76章 Zend_Version
  • 第77章 Zend_View
  • 第78章 Zend_Wildfire
  • 第79章 Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 70.6% Update 2010-11-28 - Revision 23415

    付録 B. Zend Framework 移行上の注意

    目次

    B.1. Zend Framework 1.10
    B.1.1. Zend_Controller_Front
    B.1.2. Zend_Feed_Reader
    B.1.3. Zend_File_Transfer
    B.1.3.1. Security change
    B.1.3.2. Count 検証
    B.1.4. Zend_Filter_HtmlEntities
    B.1.5. Zend_Filter_StripTags
    B.1.6. Zend_Translate
    B.1.6.1. Xliff アダプタ
    B.1.7. Zend_Validate
    B.1.7.1. 書かれたバリデータ自身
    B.1.7.2. 日付バリデータの簡略化
    B.1.7.3. Alpha、Alnum及びBarcodeバリデータの修正
    B.2. Zend Framework 1.9
    B.2.1. Zend_File_Transfer
    B.2.1.1. MimeType の検証
    B.2.2. Zend_Filter
    B.2.3. Zend_Http_Client
    B.2.3.1. 内部のアップロードされたファイル情報ストレージに変更
    B.2.3.2. Zend_Http_Client::_getParametersRecursive() の廃止
    B.2.4. Zend_Locale
    B.2.4.1. 非推奨となるメソッド
    B.2.5. Zend_View_Helper_Navigation
    B.2.6. Security fixes as with 1.9.7
    B.2.6.1. Zend_Dojo_View_Helper_Editor
    B.2.6.2. Zend_Filter_HtmlEntities
    B.2.6.3. Zend_Filter_StripTags
    B.3. Zend Framework 1.8
    B.3.1. Zend_Controller
    B.3.1.1. 標準のルートの変更
    B.3.2. Zend_Locale
    B.3.2.1. デフォルトのキャッシュ処理
    B.4. Zend Framework 1.7
    B.4.1. Zend_Controller
    B.4.1.1. ディスパッチャインターフェイスの変更
    B.4.2. Zend_File_Transfer
    B.4.2.1. フィルタやバリデータを使用する際の変更点
    B.4.2.1.1. Rename フィルタ
    B.4.2.1.2. Count バリデータ
    B.4.2.1.3. Extension バリデータ
    B.4.2.1.4. FilesSize バリデータ
    B.4.2.1.5. Hash バリデータ
    B.4.2.1.6. ImageSize バリデータ
    B.4.2.1.7. Size バリデータ
    B.4.3. Zend_Locale
    B.4.3.1. isLocale() を使う際の変更点
    B.4.3.2. getDefault() を使用する際の変更
    B.4.4. Zend_Translate
    B.4.4.1. 言語の設定
    B.4.5. Zend_View
    B.4.5.1. render() メソッドにおける LFI 保護機能の無効化
    B.5. Zend Framework 1.6
    B.5.1. Zend_Controller
    B.5.1.1. ディスパッチャインターフェイスの変更
    B.5.2. Zend_File_Transfer
    B.5.2.1. バリデータを使う際の変更点
    B.6. Zend Framework 1.5
    B.6.1. Zend_Controller
    B.7. Zend Framework 1.0
    B.7.1. Zend_Controller
    B.7.2. Zend_Currency
    B.8. Zend Framework 0.9
    B.8.1. Zend_Controller
    B.9. Zend Framework 0.8
    B.9.1. Zend_Controller
    B.10. Zend Framework 0.6
    B.10.1. Zend_Controller

    B.1. Zend Framework 1.10

    以前のバージョンから Zend Framework 1.10 またはそれ以降に更新する際は、 下記の移行上の注意点に注意すべきです。

    B.1.1. Zend_Controller_Front

    A wrong behaviour was fixed, when there was no module route and no route matched the given request. Previously, the router returned an unmodified request object, so the front controller just displayed the default controller and action. Since Zend Framework 1.10, the router will correctly as noted in the router interface, throw an exception if no route matches. The error plugin will then catch that exception and forward to the error controller. You can then test for that specific error with the constant Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:

    /**
     * Before 1.10
     */
        
    public function errorAction()
        {
            
    $errors $this->_getParam('error_handler');

            switch (
    $errors->type) {
                case 
    Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
                case 
    Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
        
    // ...

    /**
     * With 1.10
     */
        
    public function errorAction()
        {
            
    $errors $this->_getParam('error_handler');

            switch (
    $errors->type) {
                case 
    Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
                case 
    Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
                case 
    Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
        
    // ...

    B.1.2. Zend_Feed_Reader

    With the introduction of Zend Framework 1.10, Zend_Feed_Reader's handling of retrieving Authors and Contributors was changed, introducing a break in backwards compatibility. This change was an effort to harmonise the treatment of such data across the RSS and Atom classes of the component and enable the return of Author and Contributor data in more accessible, usable and detailed form. It also rectifies an error in that it was assumed any author element referred to a name. In RSS this is incorrect as an author element is actually only required to provide an email address. In addition, the original implementation applied its RSS limits to Atom feeds significantly reducing the usefulness of the parser with that format.

    The change means that methods like getAuthors() and getContributors no longer return a simple array of strings parsed from the relevant RSS and Atom elements. Instead, the return value is an ArrayObject subclass called Zend_Feed_Reader_Collection_Author which simulates an iterable multidimensional array of Authors. Each member of this object will be a simple array with three potential keys (as the source data permits). These include: name, email and uri.

    The original behaviour of such methods would have returned a simple array of strings, each string attempting to present a single name, but in reality this was unreliable since there is no rule governing the format of RSS Author strings.

    The simplest method of simulating the original behaviour of these methods is to use the Zend_Feed_Reader_Collection_Author's getValues() which also returns a simple array of strings representing the "most relevant data", for authors presumed to be their name. Each value in the resulting array is derived from the "name" value attached to each Author (if present). In most cases this simple change is easy to apply as demonstrated below.

    /**
     * Before 1.10
     */
    $feed Zend_Feed_Reader::import('http://example.com/feed');
    $authors $feed->getAuthors();

    /**
     * With 1.10
     */
    $feed Zend_Feed_Reader::import('http://example.com/feed');
    $authors $feed->getAuthors()->getValues();

    B.1.3. Zend_File_Transfer

    B.1.3.1. Security change

    For security reasons Zend_File_Transfer does no longer store the original mimetype and filesize which is given from the requesting client into its internal storage. Instead the real values will be detected at initiation.

    Additionally the original values within $_FILES will be overridden within the real values at initiation. This makes also $_FILES secure.

    When you are in need of the original values you can either store them before initiating Zend_File_Transfer or use the disableInfos option at initiation. Note that this option is useless when its given after initiation.

    B.1.3.2. Count 検証

    リリース 1.10 より前は MimeType バリデータが誤った命名を使っていました。 一貫性のために、下記の定数が変更されました。

    表 B.1. 変更された検証メッセージ

     
    TOO_MUCH TOO_MANY Too many files, maximum '%max%' are allowed but '%count%' are given  
    TOO_LESS TOO_FEW Too few files, minimum '%min%' are expected but '%count%' are given  

    コード内でこれらのメッセージを翻訳している場合、新しい定数を使います。 利点として、正しいつづりを得るために、本来の文字列を翻訳する必要はもうありません。

    B.1.4. Zend_Filter_HtmlEntities

    In order to default to a more secure character encoding, Zend_Filter_HtmlEntities now defaults to UTF-8 instead of ISO-8859-1.

    Additionally, because the actual mechanism is dealing with character encodings and not character sets, two new methods have been added, setEncoding() and getEncoding(). The previous methods setCharSet() and setCharSet() are now deprecated and proxy to the new methods. Finally, instead of using the protected members directly within the filter() method, these members are retrieved by their explicit accessors. If you were extending the filter in the past, please check your code and unit tests to ensure everything still continues to work.

    B.1.5. Zend_Filter_StripTags

    Zend_Filter_StripTags contains a flag, commentsAllowed, that, in previous versions, allowed you to optionally whitelist HTML comments in HTML text filtered by the class. However, this opens code enabling the flag to XSS attacks, particularly in Internet Explorer (which allows specifying conditional functionality via HTML comments). Starting in version 1.9.7 (and backported to versions 1.8.5 and 1.7.9), the commentsAllowed flag no longer has any meaning, and all HTML comments, including those containing other HTML tags or nested commments, will be stripped from the final output of the filter.

    B.1.6. Zend_Translate

    B.1.6.1. Xliff アダプタ

    過去には Xliff アダプタはソースの文字列をメッセージ Id として使いました。 Xliff 標準に沿って、翻訳単位 Id が使われるべきです。 この振る舞いは Zend Framework 1.10 で修正されました。 今では既定では翻訳単位 Id はメッセージId として使われます。

    しかし、 useId オプションを FALSE に設定することにより、 正しくなくて古い振る舞いをまだ得られます。

    $trans = new Zend_Translate(
        
    'xliff''/path/to/source'$locale, array('useId' => false)
    );

    B.1.7. Zend_Validate

    B.1.7.1. 書かれたバリデータ自身

    かかれたバリデータ自身の内部からエラーを返すよう設定するときは、 _error()メソッドを呼ばなくてはいけません。 Zend Framework 1.10 以前では、パラメータを与えなくてもこのメソッドを呼び出せました。 そこで、最初に見つかったメッセージテンプレートを使いました。

    この振る舞いには、一つ以上の異なるメッセージを返すバリデータを使うときに問題があります。 また、既存のバリデータを拡張すると、予期しない結果を得ることもあります。 このせいで、あなたが期待した通りではないメッセージにユーザーが遭遇することにもなりました。

    My_Validator extends Zend_Validate_Abstract
    {
        public 
    isValid($value)
        {
            ...
            
    $this->_error(); // 異なるOS間での予期されない結果
            
    ...
        }
    }

    この問題を防ぐために、_error()メソッドにパラメータを与えないで呼び出すことは、 もはやできなくなります。

    My_Validator extends Zend_Validate_Abstract
    {
        public 
    isValid($value)
        {
            ...
            
    $this->_error(self::MY_ERROR); // 定義されたエラー、予期されない結果ではありません
            
    ...
        }
    }

    B.1.7.2. 日付バリデータの簡略化

    Zend Framework 1.10 以前では、同一の2つのメッセージが、 日付バリデータ内でスローされていました。 これらは、NOT_YYYY_MM_DDFALSEFORMATでした。 Zend Framework 1.10 現在では、 与えられた日付が設定されたフォーマットに一致しない場合、 FALSEFORMATメッセージだけが返されます。

    B.1.7.3. Alpha、Alnum及びBarcodeバリデータの修正

    Zend Framework 1.10 以前では、バーコード・アダプタ2種類と、 Alpha 及び Alnum バリデータ内のメッセージが同一でした。 このため、カスタムのメッセージ、翻訳、 またはこれらのバリデータの複数のインスタンスを使うときに問題がありました。

    Zend Framework 1.10 では、定数値は、一意であるように変更されました。 マニュアルで提案されたように定数を使ったときには、変更がありません。 しかし、コードで定数の内容を使ったときには、 それらを変更しなければなりません。 下記の表では変更された値を示します。

    表 B.2. 利用可能なバリデータのメッセージ

    バリデータ 定数
    Alnum STRING_EMPTY alnumStringEmpty
    Alpha STRING_EMPTY alphaStringEmpty
    Barcode_Ean13 INVALID ean13Invalid
    Barcode_Ean13 INVALID_LENGTH ean13InvalidLength
    Barcode_UpcA INVALID upcaInvalid
    Barcode_UpcA INVALID_LENGTH upcaInvalidLength
    Digits STRING_EMPTY digitsStringEmpty

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...