Webアプリケーションフレームワーク
PHPの動的なWebページに向けた設計により、CakePHP、Symfony、Zend Framework、FuelPHP、CodeIgniter、Yii、PRADO、Laravel、eZ Publishなどのフレームワークが支持を得ている。 これらのフレームワークは、コア言語の上にフレームワーク層を適用することにより、アプリケーションの構造とモデル化を支援する。 これらは、ボトムアップからのプログラミングについての問題に対向するものである。
上記のフレームワークとは逆に、Magento、MODx、Drupal、Joomla!、TYPO3といったソフトウェアプロジェクトは、Webコンテンツ管理システムからより上位のWebアプリケーションフレームワークへと変貌し始めている。 これらの構造は、Webアプリケーションフレームワークに関連した機能を提供するモジュールにより機能を拡張できる最小限のコアを提供している。
オープンソースのプロジェクトとしてコミュニティが多数のモジュールを寄贈しており(たとえばDrupalは1,000以上、Typo3には2,500以上のモジュールがある)、CMSのコア+モジュールを用いて、広い範囲の機能を持ったWebサイトを、実際にはPHPレベルのコーディングを行わずに組み立てる方法が形作られている。
従来のフレームワークは基本的に横型に分割されているため、ユーザ機能を追加 / 変更 / 削除する場合は、アプリケーションを入れ替える必要があった。ポータルフレームワークはユーザ機能を縦型に分割し、ユーザ機能毎にホット・デプロイ / アンデプロイできる。デプロイされたポートレットをドラッグ・アンド・ドロップ操作でWebページに配置することができるのが特徴である。
なお、ポートレット毎にエンティティインターフェース(モデル)、表示(ビュー)、業務ロジックが含まれているため、ポートレット毎に異なるスタック技術を利用することもできる。例えばJSFで作成したポートレットとSpring Frameworkで作成したポートレットを1つのWebページに配置することができる。また、異なった言語でポートレットを記述することもできる。例えばJava、Ruby、PHPで記述したポートレットを一つのWebページに配置できる。
ユーザ機能を随時に追加/置き換え/削除することができるため、ポートレットフレームワークはアジャイル開発のように継続的に開発を行う場合に適している。例えばScrumの各ユーザストリーをプラグインにすることができる。
ポートレットフレームワークを利用したWebシステムの例として、liferay、Alfrescoなどがある。その中でliferayは開発者向けのツールが揃っている。
成熟した「フルスタック」フレームワークが登場した。 これは、複数のWeb開発に有用なライブラリを一つに結合した Web開発者向けの ソフトウェアスタックとして集約したものである。 例として、Jakarta EE、OpenACS、Ruby on Railsなどがある。