概要

変遷

  • 2006年 初版リリース
  • 2007年 Zend Framework 1.0リリース
  • 2012年 Zend Framework 2.0リリース
  • 2016年 Zend Framework 3.0リリース

特徴

拡張性に優れている

  • ZendFramework?はコンポーネントと呼ばれる数多くのクラスライブラリが用意されており拡張性に優れている
  • PHP標準コーディング規約「PHP-FIG」に準拠した、ミドルウェアまたはMVCに基づくオープンアーキテクチャを採用している
  • 大規模な案件に向いている

デザインパターン制限無し

  • ZendFramework?はデザインパターン制限無しという特徴がある
  • 自由に使えるアーキテクチャが設計されており、結合度の弱いコンポーネント群から構成されているため、その依存関係は最小限に抑えられている

バックエンドサポート

  • 柔軟な「キャッシング機能」「メモリ機能」「ファイルシステム機能」などを搭載し、多くのバックエンドをサポートできる

高パフォーマンス

  • ZendFramework?はパフォーマンスチューニングを念頭に置いて設計されているという特徴がある
  • 最新のZend Framework 3は、バージョン2リリースよりも最大4倍高速に実行される

Laminas Project

注意点

ControllerとAction名がデフォルトで大文字と小文字をサポートしていない

連携ツール

Zend Frameworkは、以下の開発ツールと連携して開発を行える。

  • パッケージマネージャー「Composer」
  • テストフレームワーク「PHPUnit」
  • 継続的インテグレーションサービス「Travis CI」など

環境構築

Ubuntu

Zend Framework のインストール

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install -y php apache2 libapache2-mod-php
$ sudo apt install -y php-mbstring php-mysql php-xml

$ curl -sS https://getcomposer.org/installer | sudo php
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo chmod +x /usr/local/bin/composer

$ cd /var/www
$ composer create-project -sdev zendframework/skeleton-application ZendApp
$ cd ZendApp
$ composer update
  • composer update を実行すると、パッケージはupdateされるが、Laminas Projectに移行するよう勧められる。
    Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
    Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
    Package zendframework/zend-authentication is abandoned, you should avoid using it. Use laminas/laminas-authentication instead.
    Package zendframework/zend-barcode is abandoned, you should avoid using it. Use laminas/laminas-barcode instead.
    Package zendframework/zend-cache is abandoned, you should avoid using it. Use laminas/laminas-cache instead.
    Package zendframework/zend-captcha is abandoned, you should avoid using it. Use laminas/laminas-captcha instead.
    Package zendframework/zend-code is abandoned, you should avoid using it. Use laminas/laminas-code instead.
    Package zendframework/zend-config is abandoned, you should avoid using it. Use laminas/laminas-config instead.
    Package zendframework/zend-console is abandoned, you should avoid using it. Use laminas/laminas-console instead.
    Package zendframework/zend-crypt is abandoned, you should avoid using it. Use laminas/laminas-crypt instead.
    Package zendframework/zend-db is abandoned, you should avoid using it. Use laminas/laminas-db instead.
    Package zendframework/zend-debug is abandoned, you should avoid using it. No replacement was suggested.
    Package zendframework/zend-di is abandoned, you should avoid using it. Use laminas/laminas-di instead.
    Package zendframework/zend-dom is abandoned, you should avoid using it. Use laminas/laminas-dom instead.
    Package zendframework/zend-escaper is abandoned, you should avoid using it. Use laminas/laminas-escaper instead.
    Package zendframework/zend-eventmanager is abandoned, you should avoid using it. Use laminas/laminas-eventmanager instead.
    Package zendframework/zend-feed is abandoned, you should avoid using it. Use laminas/laminas-feed instead.
    Package zendframework/zend-file is abandoned, you should avoid using it. Use laminas/laminas-file instead.
    Package zendframework/zend-filter is abandoned, you should avoid using it. Use laminas/laminas-filter instead.
    Package zendframework/zend-form is abandoned, you should avoid using it. Use laminas/laminas-form instead.
    Package zendframework/zend-http is abandoned, you should avoid using it. Use laminas/laminas-http instead.
    Package zendframework/zend-i18n is abandoned, you should avoid using it. Use laminas/laminas-i18n instead.
    Package zendframework/zend-i18n-resources is abandoned, you should avoid using it. Use laminas/laminas-i18n-resources instead.
    Package zendframework/zend-inputfilter is abandoned, you should avoid using it. Use laminas/laminas-inputfilter instead.
    Package zendframework/zend-json is abandoned, you should avoid using it. Use laminas/laminas-json instead.
    Package zendframework/zend-loader is abandoned, you should avoid using it. Use laminas/laminas-loader instead.
    Package zendframework/zend-log is abandoned, you should avoid using it. Use laminas/laminas-log instead.
    Package zendframework/zend-mail is abandoned, you should avoid using it. Use laminas/laminas-mail instead.
    Package zendframework/zend-math is abandoned, you should avoid using it. Use laminas/laminas-math instead.
    Package zendframework/zend-memory is abandoned, you should avoid using it. Use laminas/laminas-memory instead.
    Package zendframework/zend-mime is abandoned, you should avoid using it. Use laminas/laminas-mime instead.
    Package zendframework/zend-modulemanager is abandoned, you should avoid using it. Use laminas/laminas-modulemanager instead.
    Package zendframework/zend-mvc is abandoned, you should avoid using it. Use laminas/laminas-mvc instead.
    Package zendframework/zend-navigation is abandoned, you should avoid using it. Use laminas/laminas-navigation instead.
    Package zendframework/zend-paginator is abandoned, you should avoid using it. Use laminas/laminas-paginator instead.
    Package zendframework/zend-permissions-acl is abandoned, you should avoid using it. Use laminas/laminas-permissions-acl instead.
    Package zendframework/zend-permissions-rbac is abandoned, you should avoid using it. Use laminas/laminas-permissions-rbac instead.
    Package zendframework/zend-progressbar is abandoned, you should avoid using it. Use laminas/laminas-progressbar instead.
    Package zendframework/zend-serializer is abandoned, you should avoid using it. Use laminas/laminas-serializer instead.
    Package zendframework/zend-server is abandoned, you should avoid using it. Use laminas/laminas-server instead.
    Package zendframework/zend-servicemanager is abandoned, you should avoid using it. Use laminas/laminas-servicemanager instead.
    Package zendframework/zend-session is abandoned, you should avoid using it. Use laminas/laminas-session instead.
    Package zendframework/zend-soap is abandoned, you should avoid using it. Use laminas/laminas-soap instead.
    Package zendframework/zend-stdlib is abandoned, you should avoid using it. Use laminas/laminas-stdlib instead.
    Package zendframework/zend-tag is abandoned, you should avoid using it. Use laminas/laminas-tag instead.
    Package zendframework/zend-test is abandoned, you should avoid using it. Use laminas/laminas-test instead.
    Package zendframework/zend-text is abandoned, you should avoid using it. Use laminas/laminas-text instead.
    Package zendframework/zend-uri is abandoned, you should avoid using it. Use laminas/laminas-uri instead.
    Package zendframework/zend-validator is abandoned, you should avoid using it. Use laminas/laminas-validator instead.
    Package zendframework/zend-version is abandoned, you should avoid using it. Use ocramius/package-versions instead.
    Package zendframework/zend-view is abandoned, you should avoid using it. Use laminas/laminas-view instead.
    Package zendframework/zend-xmlrpc is abandoned, you should avoid using it. Use laminas/laminas-xmlrpc instead.
    Package zendframework/zendframework is abandoned, you should avoid using it. Use laminas/laminas-mvc-skeleton instead.
    Package zendframework/zendxml is abandoned, you should avoid using it. Use laminas/laminas-xml instead.
    Generating autoload files
    6 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
  • Webサーバを起動して、ブラウザで http://localhost:8080 にアクセス
    $ cd /var/www/ZendApp
    $ php -S 0.0.0.0:8080 -t public/ public/index.php
  • ただし、以下のエラーが発生してページが表示されず orz...
    PHP Fatal error:  Uncaught TypeError: array_key_exists(): Argument #2 ($array) 
    must be of type array, Zend\I18n\Translator\TextDomain given in 
    /var/www/ZendApp/vendor/zendframework/zendi18n/src/Translator/Loader/Gettext.php:142

PHPのバージョンを変更

  • PHPのバージョンを確認 /var/www/ZendApp?$ php -v
    PHP 8.0.14 (cli) (built: Dec 20 2021 21:22:57) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.14, Copyright (c) Zend Technologies
      with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
  • PHPのバージョンを 7.4 に変更
    $ sudo update-alternatives --config php
    
    alternative php (/usr/bin/php を提供) には 3 個の選択肢があります。
    
      選択肢    パス                優先度  状態
    ------------------------------------------------------------
    * 0            /usr/bin/php.default   100       自動モード
      1            /usr/bin/php.default   100       手動モード
      2            /usr/bin/php7.4        74        手動モード
      3            /usr/bin/php8.0        80        手動モード 
    
    現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
    update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php7.4 を使います
    
    $ php -v
    PHP 7.4.27 (cli) (built: Dec 20 2021 21:28:15) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
      with Zend OPcache v7.4.27, Copyright (c), by Zend Technologies
    
  • 再度Webサーバを起動して、ブラウザで http://localhost:8080 にアクセス
    $ cd /var/www/ZendApp
    $ php -S 0.0.0.0:8080 -t public/ public/index.php
  • ページが表示された(でも、Zend Framework 2.5.1 だ)

macOS

パッケージ

  • Zend Frameworkは、60以上のPHP用パッケージコレクションで構成されている
  • 各パッケージは、完全オブジェクト指向で、パッケージマネージャー「Composer」経由でインストールできる
  • 各コンポーネント間の結合度は弱く、依存関係は最小限に抑えられている

Zend/Authentication

Zend/Barcode

Zend/Cache

Zend/Captcha

Zend/Config

Zend/Console

Zend/Crypt

Zend/Db

Zend/Di

Zend/Dom

Zend/Escaper

Zend/EventManager?

Zend/Feed

Zend/Filter

Zend/Form

Zend/Http

Zend/I18n

Zend/InputFilter?

Zend/Json

Zend/Ldap

Zend/Loader

Zend/Log

Zend/Mail

Zend/Math

Zend/Mime

Zend/ModuleManager?

Zend/Mvc

Zend/Navigation

Zend/Paginator

Zend/Permissions

Zend/ProgressBar?

Zend/Serializer

Zend/Server

Zend/ServiceManager?

Zend/Session

Zend/Soap

Zend/Stdlib/Hydrator

Zend/Tag

Zend/Test

PHPUnit

Zend/Text

Zend/Uri

Zend/Validator

Zend/Version

Zend/View

Zend/XmlRpc?

メソッド

トラブルシューティング

Base table or view not found

  • Module.php 内の getServiceConfig?() 内の「return new TableGateway?()」でテーブル名を指定する際に、大文字/小文字に注意

Zendframeworkの404 Not Foundで詰まった

RewriteEngine? の設定がされているのを確認すること!

<VirtualHost my.domain.com:80>
    ServerName   my.domain.com
    DocumentRoot /path/to/server/root/my.domain.com/public
 
    RewriteEngine off
 
    <Location />
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ /index.php [NC,L]
    </Location>
</VirtualHost>

AllowOverride? が All になっているのを確認すること!

AllowOverride All

他フレームワークへの移行

Laravel

Smarty


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-05-26 (木) 16:05:42 (698d)