#author("2022-05-16T09:43:23+00:00","default:admin","admin") #author("2022-05-26T07:05:42+00:00","default:admin","admin") -[[Zend Framework:https://framework.zend.com/]] --[[Documentation - v1.10:https://framework.zend.com/manual/1.10/en/manual.html]] -[[Laminas Project:https://getlaminas.org/]] -[[Zend Frameworkに脆弱性、原因はPHPの可能性も - 現在は係争状態:https://news.mynavi.jp/techplus/article/20210107-1623581/]] --Zend Framework 3.0.0はすでにサポートが終了しているので、Laminas Project への移行を推奨 *概要 [#q6644124] -[[ZendFrameworkを理解する!初心者でも分かる歴史、特徴、基礎知識などを簡単に解説!:https://anken-hyouban.com/blog/2020/11/15/zendframework/]] -[[オープンソースのフレームワーク/Zend Frameworkとは:https://www.ossnews.jp/oss_info/Zend_Framework]] -[[Zend Framework3 超入門:https://qiita.com/mogamoga1337/items/c1fc87218616fc069c05]] -[[Zend Framework2をPHP7.3で動作させる:https://ageo-soft.info/programming_languages/php/3403/]] **変遷 [#af1b1668] -2006年 初版リリース -2007年 Zend Framework 1.0リリース -2012年 Zend Framework 2.0リリース -2016年 Zend Framework 3.0リリース **特徴 [#x6e090e7] ***拡張性に優れている [#n4eabf40] -ZendFrameworkはコンポーネントと呼ばれる数多くのクラスライブラリが用意されており拡張性に優れている -PHP標準コーディング規約「PHP-FIG」に準拠した、ミドルウェアまたはMVCに基づくオープンアーキテクチャを採用している -大規模な案件に向いている ***デザインパターン制限無し [#t4fb2894] -ZendFrameworkはデザインパターン制限無しという特徴がある -自由に使えるアーキテクチャが設計されており、結合度の弱いコンポーネント群から構成されているため、その依存関係は最小限に抑えられている ***バックエンドサポート [#va3eb234] -柔軟な「キャッシング機能」「メモリ機能」「ファイルシステム機能」などを搭載し、多くのバックエンドをサポートできる ***高パフォーマンス [#u0b8af1f] -ZendFrameworkはパフォーマンスチューニングを念頭に置いて設計されているという特徴がある -最新のZend Framework 3は、バージョン2リリースよりも最大4倍高速に実行される *[[Laminas Project:https://getlaminas.org/]] [#ma238db4] -[[Documentation:https://docs.laminas.dev/]] -[[Laminasことはじめ:https://qiita.com/kubotak/items/55c6a2b97ec5e90ffcf7]] -[[Why Choose Laminas Over Other PHP Frameworks?:https://www.zend.com/resources/why-choose-laminas-over-other-php-frameworks]] *注意点 [#g7d0e1ec] ***ControllerとAction名がデフォルトで大文字と小文字をサポートしていない [#i4bf98eb] -[[Zend FrameworkフレームワークのAction大文字小文字と要求URL大文字小文字の問題:https://jpdebug.com/p/847321]] --Zend Framework(ZF)MVCのControllerとAction名がデフォルトで大文字と小文字をサポートしていない --フロントエンドコントローラFrontControllerのuseCaseSensitiveActionsパラメータを設定すれば、Zend Frameworkが大文字と小文字のControllerとActionの名前をサポートするようにすることができる *連携ツール [#p43fa333] Zend Frameworkは、以下の開発ツールと連携して開発を行える。 -パッケージマネージャー「Composer」 -テストフレームワーク「PHPUnit」 -継続的インテグレーションサービス「Travis CI」など *環境構築 [#i0881383] **Ubuntu [#j9fad846] -[[How To Install Zend Framework on Ubuntu 18.04:https://tecadmin.net/install-zend-ubuntu-18-04/]] ***Zend Framework のインストール [#s0de198e] $ 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のバージョンを変更 [#v0da5c4c] -[[ubuntu20.04.1 phpのバージョンを切り替える:https://mebee.info/2020/08/17/post-16891/]] -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 [#e3809164] -[[Zend Framework2をPHP7.3で動作させる:https://ageo-soft.info/programming_languages/php/3403/]] *パッケージ [#v0b5950c] -Zend Frameworkは、60以上のPHP用パッケージコレクションで構成されている -各パッケージは、完全オブジェクト指向で、パッケージマネージャー「Composer」経由でインストールできる -各コンポーネント間の結合度は弱く、依存関係は最小限に抑えられている **Zend/Authentication [#g0e5a07c] **Zend/Barcode [#l2f4e5d6] **Zend/Cache [#qe569183] **Zend/Captcha [#v956eefd] **Zend/Config [#qeb29174] **Zend/Console [#s5030d6c] **Zend/Crypt [#n7411f1b] **Zend/Db [#n5bcc8c7] -[[第5章 Zend_Db:https://docs.huihoo.com/php/zend/ZendFramework-0.1.5/documentation/end-user/ja/zend.db.html]] **Zend/Di [#s07849c0] **Zend/Dom [#p7fe21bc] **Zend/Escaper [#pcad7dc4] **Zend/EventManager [#ee83c3ba] **Zend/Feed [#i1983efd] **Zend/Filter [#x1c62e48] **Zend/Form [#m2f60a16] **Zend/Http [#se1c01b4] **Zend/I18n [#r8cd3ae0] **Zend/InputFilter [#xdc8e0a4] **Zend/Json [#t02db080] **Zend/Ldap [#b299a785] **Zend/Loader [#m20f03a0] **Zend/Log [#z8a4ced0] **Zend/Mail [#h63c4e7d] **Zend/Math [#f65e3fe7] **Zend/Mime [#c32a6744] **Zend/ModuleManager [#g3870707] **Zend/Mvc [#oaa2e974] **Zend/Navigation [#w7aeb94e] **Zend/Paginator [#x079560e] **Zend/Permissions [#jeb1b438] **Zend/ProgressBar [#y8cbbeff] **Zend/Serializer [#ge8cd3cc] **Zend/Server [#v4de41bc] **Zend/ServiceManager [#vd0f067f] **Zend/Session [#qa40048c] **Zend/Soap [#m19bdfd8] **Zend/Stdlib/Hydrator [#k156561c] **Zend/Tag [#o0c452c8] **Zend/Test [#x1f6e51d] ***PHPUnit [#xd8b540f] -[[Zend_Test_PHPUnit(日本語):https://framework.zend.com/manual/1.11/ja/zend.test.phpunit.html]] -[[[PHP]ZendFrameworkで作成したControllerをPHPUnitでテストする:http://en.yummy.stripper.jp/?eid=906156]] -[[Zend Framework 1 でテストごとにDB接続してコネクションが枯渇する:https://ngyuki.hatenablog.com/entry/2013/10/05/183033]] -[[Zend Controllerの単体テストと実行されたアクションの一部をモッキングする:https://jpdebug.com/p/1678123]] -[[ZendFWでテストやろうぜ!:https://speakerdeck.com/monochromegane/zendfwdetesutoyarouze]] **Zend/Text [#g1e6ee0d] **Zend/Uri [#g80b0003] **Zend/Validator [#y26096f0] **Zend/Version [#sb01386e] **Zend/View [#j17d6fc0] **Zend/XmlRpc [#lbef3cdf] *メソッド [#l751fd72] -[[[ Zend Framework1 ] 別アクションへフォワード する ( _forward ):https://hensa40.cutegirl.jp/archives/3005]] *トラブルシューティング [#hff84b41] ***Base table or view not found [#q144cdcb] -Module.php 内の getServiceConfig() 内の「return new TableGateway()」でテーブル名を指定する際に、大文字/小文字に注意 **Zendframeworkの404 Not Foundで詰まった [#n36519b7] -[[Zendframeworkの404 Not Foundで詰まった:http://blog.livedoor.jp/blog_penguin/archives/40328852.html]] ***RewriteEngine の設定がされているのを確認すること! [#x9bd4d34] -[[リライト設定ガイド:https://framework.zend.com/manual/1.12/ja/project-structure.rewrite.html]] <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 になっているのを確認すること! [#g8a4b8ee] AllowOverride All *他フレームワークへの移行 [#w48d72c1] -[[2017年のPHPフレームワーク——2強時代に何を学ぶべきか?:https://www.webprofessional.jp/the-state-of-php-mvc-frameworks-in-2017/]] **Laravel [#ub88ae45] -[[会社のフレームワークをLaravel にしたという話:https://blogs.itmedia.co.jp/noubiz/2014/07/laravel.html]] -[[PHPのフレームワーク、レガシーなZendとモダンなLaravelを入社してから使ってみた感想:https://qiita.com/yuzooho/items/8e863f2e32f584d836ea]] -[[PHPのフレームワークにLaravelがオススメな3つの理由!:https://cakephp2.com/programming/php/6277/]] *Smarty [#r01e202a] -[[ZEND FRAMEWORKとSMARTYの連携:その1-環境:https://fieldnets.wordpress.com/2011/05/31/zend-framework%e3%81%a8smarty%e3%81%ae%e9%80%a3%e6%90%ba%ef%bc%9a%e3%81%9d%e3%81%ae%ef%bc%91-%e7%92%b0%e5%a2%83/]] -[[ZEND FRAMEWORKとSMARTYの連携:その2-SMARTY対応テンプレート:https://fieldnets.wordpress.com/2011/05/31/zend-framework%e3%81%a8smarty%e3%81%ae%e9%80%a3%e6%90%ba%ef%bc%9a%e3%81%9d%e3%81%ae%ef%bc%92-smarty%e5%af%be%e5%bf%9c%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88/]] -[[ZEND FRAMEWORKとSMARTYの連携:その3-BOOTSTRAP:https://fieldnets.wordpress.com/2011/05/31/zend-framework%e3%81%a8smarty%e3%81%ae%e9%80%a3%e6%90%ba%ef%bc%9a%e3%81%9d%e3%81%ae%ef%bc%93-bootstrap/]] -[[ZEND FRAMEWORKとSMARTYの連携:その4-SMARTYのラッパー:https://fieldnets.wordpress.com/2011/05/31/zend-framework%e3%81%a8smarty%e3%81%ae%e9%80%a3%e6%90%ba%ef%bc%9a%e3%81%9d%e3%81%ae%ef%bc%94-smarty%e3%81%ae%e3%83%a9%e3%83%83%e3%83%91%e3%83%bc/]] -[[ZEND FRAMEWORKとSMARTYの連携:その5-コントローラの処理:https://fieldnets.wordpress.com/2011/05/31/zend-framework%e3%81%a8smarty%e3%81%ae%e9%80%a3%e6%90%ba%ef%bc%9a%e3%81%9d%e3%81%ae%ef%bc%95-%e3%82%b3%e3%83%b3%e3%83%88%e3%83%ad%e3%83%bc%e3%83%a9%e3%81%ae%e5%87%a6%e7%90%86/]] -[[ZEND FRAMEWORKのモジュール機能を使わず、同等機能の実現:https://fieldnets.wordpress.com/2011/06/03/zend-framework%e3%81%ae%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e6%a9%9f%e8%83%bd%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%9a%e3%80%81%e5%90%8c%e7%ad%89%e6%a9%9f%e8%83%bd%e3%81%ae%e5%ae%9f%e7%8f%be/]] -[[Zend FrameworkとSmartyを連携させる(1):https://helog.jp/php/zend-framework-smarty-1/]] -[[ZendFrameworkとsmartyを使う:https://ameblo.jp/toxicsweet/entry-11283998788.html]] -[[Zend Framework と Smarty:https://www.uconst.org/blog/archives/71]]