ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ - php ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ - ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ html (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±Π»ΠΎΠ½) Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΠ»ΠΈ ΠΈ ΡΠΊΡΠΈΠΏΡΡ ΠΎΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ°ΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈ Π»Π΅ΠΆΠ°Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅., (*1)
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:, (*2)
- Π―Π²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
- ΠΠ·ΠΎΠ»ΡΡΠΈΡ ΡΡΠΈΠ»Π΅ΠΉ. ΠΠΎΠ³Π΄Π° ΡΡΠΈΠ»ΠΈ ΠΏΠΈΡΡΡΡΡ ΠΈ Π»Π΅ΠΆΠ°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ Π²ΡΠ΄Π°ΡΠΈ (Ρ.Π΅. ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ) - ΠΎΠ½ΠΈ ΠΏΠΈΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΡΡΡΠ°Π½ΠΈΡΡ Π² ΠΏΡΠ°Π²ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ) ΡΡΠΈΠ»ΠΈ ΡΠ°ΡΡΠΎ Π»ΠΎΠΌΠ°ΡΡΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΉ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠΉ ΠΊΠ°ΡΠΈ. ΠΡΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΊΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π² ΡΡΠΈΠ»ΡΡ
.
- ΠΠ°ΡΠΈΡΠ° ΠΎΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² css-ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ css-ΠΊΠ»Π°ΡΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΈΡΡΡΡΡ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΡΠΈΠ»ΠΈ.
- Π£ΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊ ΡΡΠΈΠ»ΡΠΌ ΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ - ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ ΡΡΠ΄ΠΎΠΌ Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ php-ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΠΊΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. Π’.Π΅. ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ:, (*3)
- ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ render() ΠΈΠ»ΠΈ html()
- ΠΌΠ΅ΡΠΎΠ΄Ρ getCssPath() ΠΈ getJsPath(), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ css ΠΈ js ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
- Π€Π°ΠΉΠ»Ρ css ΠΈ js ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ Π°Π³ΡΠ΅Π³Π°ΡΠΎΠ².
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² composer.conf ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ composer., (*4)
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΠ°ΠΏΠΊΡ Components/HeaderComponent ΠΈ Π² Π½Π΅Π΅ ΠΊΠ»Π°Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ:, (*5)
HeaderComponent.php, (*6)
<?php
namespace Components\HeaderComponent;
use OLOG\Component\ComponentTrait;
use OLOG\Component\InterfaceComponent;
class HeaderComponent implements InterfaceComponent
{
use ComponentTrait;
static public function render()
{
$_component_class = \OLOG\Component\GenerateCSS::getCssClassName(__CLASS__);
?>
<h1 class="<?= $_component_class ?>">PAGE HEADER</h1>
<?php
}
}
styles.less, (*7)
._COMPONENT_CLASS {
font-size: 24px;
background-color: #eee;
}
scripts.js - ΠΏΡΡΡΠΎΠΉ, (*8)
ΠΠΎΡΠΎΠΌ Π½Π°Π΄ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² ΡΠ±ΠΎΡΡΠΈΠΊΠ΅. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π»:, (*9)
$conf['component_classes_arr'] = [
HeaderComponent::class
];
Π ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ JS ΠΈ CSS ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅:, (*10)
$conf[\OLOG\Component\ComponentConstants::MODULE_NAME] = new \OLOG\Component\ComponentConfig(true, true);
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° - Π²ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² index.php, ΡΠΎΠ³Π΄Π° Π°Π³ΡΠ΅Π³Π°ΡΡ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΊ ΡΠ°ΠΉΡΡ., (*11)
<?php
require_once '../vendor/autoload.php';
\OLOG\ConfWrapper::assignConfig(\PHPComponentsDemo\ComponentsDemoConfig::get());
\OLOG\Component\GenerateCSS::generateCSS();
\OLOG\Component\GenerateJS::generateJS();
\PHPComponentsDemo\DemoLayout\DemoLayoutComponent::render();
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅:, (*12)
<link href="/assets/common.css" rel="stylesheet"/>
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»
Π’ΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² getCssPath() ΠΈ getJsPath() - ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ styles.less ΠΈ scripts.js Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. Π’.Π΅. Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎΡ ΡΡΠ΅ΠΉΡ ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° - Π² ΠΊΠ»Π°ΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π½Π΄Π΅ΡΠ°., (*13)
ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΡΡΠΈΠ»Π΅ΠΉ (ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°)
Π ΡΠ°ΠΉΠ»Π΅ ΡΡΠΈΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ _COMPONENT_CLASS - ΡΠ±ΠΎΡΡΠΈΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡ Π΅Π΅ Π½Π° Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΡ css ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°., (*14)
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² ΠΊΠΎΠ΄Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ΅ΡΠ΅Π· \OLOG\Component\GenerateCSS::getCssClassName(CLASS) (ΡΡΠΎΠ±Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ)., (*15)
Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² ΠΊΠΎΠ΄Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ΅ΡΠ΅Π· \OLOG\Component\GenerateJS::generateComponentInstanceId()., (*16)
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ id Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π² js., (*17)