Выбор фреймворка php

IL
На сайте с 20.04.2007
Offline
435
#41
Ms-Dred:
Я колупал только два фреймворка это CI и Yii, сравнив их обоих по понятности кода, второй можно сразу же удалять. Я особо в Yii и не разбирался

Не ради холивара..

Если у меня не получается что-то понять, это не всегда значит, что это "что-то" слишком уж непонятное..

Ms-Dred:
А ставить фрейм и переопределять какие либо настройки, по мне так проще на ucoze сидеть.

Вы действительно не поняли..

Ms-Dred:
CI форево! Но так же ищу альтернативу ради любопытства.

посмотрите onphp

после него - slim

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Ayavryk
На сайте с 11.10.2003
Offline
209
#42
DiAksID:
имхо - уж слишком жёсткое заявление ;) ибо особым "изяществом кода"

Сорри. Имел ввиду не программный код самого фреймворка, а качество кода генерируемого HTML-кода и js.

ivan-lev:
А что понравилось?

Количество расширений, но так как они подключаются мне не нравится категорически.

ЗЫ я смотрю на это не как программист, а как верстальщик. И четко вижу - это писал именно программист, которого верстка интересует в самую последнюю очередь.

Ms-Dred:
Я колупал только два фреймворка это CI и Yii, сравнив их обоих по понятности кода, второй можно сразу же удалять.

Посмотрите Laravel. Среди разработчиков Phil Sturgeon. Часто пишут типа "Для тех, кому нравится CodeIgniter и не нравится Yii" (SamDark).

Мне в YII было очень тяжело въезжать после CI. В Laravel все просто,знакомо, понятно и никаких излишеств. По крайней мере на начальном этапе (учебный блог, простенькая CMS)

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
DiAksID
На сайте с 02.08.2008
Offline
236
#43
Ayavryk:
Сорри. Имел ввиду не программный код самого фреймворка, а качество кода генерируемого HTML-кода и js...

о! тогда то же как верстальщик могу сказать, что генерируемый код можно привксти к любому, самому наиоптимизированному и суперкомпактному виду совсем небольшим количеством весьма разумных и понятных телодвижений. чес слово ;) а то "страхолюдство" которое заложено в дефолтных настройках работы компонентов имеет весьма веские резоны.

что есть в Yii и ещё больше в Yii2 - это внутренняя логика. один раз разобравшись с работой одного компонента, можно быть на 99% уверен, что другой имеет схожую структуру и настроится после этого влёт...

ЗЫ: а слегка расширив под себя дефолтный clientScript (именно и только он Вас так огорчил) можно реально очень изящно встраивать красивые фичи. а в Yii2 ещё универсальные всё получается...

show must go on !!!...
Ayavryk
На сайте с 11.10.2003
Offline
209
#44
DiAksID:
генерируемый код можно привксти к любому, самому наиоптимизированному и суперкомпактному виду ... слегка расширив под себя дефолтный clientScript

Возможно. Но маразматический клиентский код приводит к подозрениям, что проще будет написать все с нуля чем переделывать то что есть. Весь слой VIEW вызывает у меня протест. А без него все плюшки YII теряются.

Все сугубо субъективно, YII наверное хороший фреймворк, но не мой

DiAksID
На сайте с 02.08.2008
Offline
236
#45
Ayavryk:
... Весь слой VIEW вызывает у меня протест. А без него все плюшки YII теряются...

вполне согласен - это было одно из отступлений от MVC в Yii 1, таки вот что имеем в 2-ке:

Yii 2.0 introduces a View class to represent the view part of the MVC pattern. It can be configured globally through the "view" application component. It is also accessible in any view file via $this. This is one of the biggest changes compared to 1.1: **$this in a view file no longer refers to the controller or widget object.** It refers to the view object that is used to render the view file.

кстати и про CClientScript успешно забыли теперь есссесссно, всё ушло в View.

ну ни на что не претендующий (!) ооочень неторопливо делающийся Yii2 app: http://xcook.ru/ в коде пока полный порядок, хотя и фишек особых нет.

основной layout:


<?php
use yii\helpers\Html;
use yii\widgets\Menu;

use general\modules\Users;
use general\widgets\Minify;

use frontend\config\AppAsset;

/**
*
*/

// menus
$navbar = array(
array(
'label' => Yii::t('site', 'X cook'),
'url' => array('/site/index'),
),
array(
'label' => Yii::t('site', 'Cooking recipes'),
'url' => array('/recipes/default/index'),
// 'active' => $this->context->module->id === 'recipes',
),
array(
'label' => Yii::t('site.contact', 'Contacts'),
'url' => array('/site/contact'),
),
);
if (Yii::$app->user->isGuest)
{
$navbar[] = array(
'label' => Yii::t('app', 'Sign up'),
'url' => array('/users/default/signup'),
);
$navbar[] = array(
'label' => Yii::t('app', 'Login'),
'url' => array('/users/default/login'),
);
}
else
{
$navbar[] = array(
'label' => Yii::t('app', 'Logout') . ' (' . Yii::$app->user->identity->username .')',
'url' => array('/users/default/logout'),
);
}

// footer menu
$footer = array(
'options' => array(
'class' => 'nav nav-pills',
),
'items' => array(
array(
'label' => Yii::t('site', 'About'),
'url' => array(
'/site/view',
'page' => 'about',
),
),
array(
'template' => '<a class="icon-sitemap" href="#" onclick="window.open(\'//validator.w3.org/check?uri=http://' . $_SERVER['HTTP_HOST'] . Yii::$app->request->url . '\',\'_blank\')"></a>',
),
),
);



AppAsset::register($this);

$this->beginPage(); ?>
<!doctype html>

<html class="no-js" lang="<?php echo Yii::$app->language ?>">

<head>
<?php $this->head();?>
</head>

<body>
<?php $this->beginBody(); ?>
<div id="wrapper" class="container" <?php echo $this->schema->scope($this->schema->webpage); ?>>
<?php Minify::begin(); ?>
<div
role="main"
itemprop="mainContentOfPage"
><?php echo $content; ?></div>

<header
role="banner"
id="banner"
>
<nav
role="navigation"
class="navbar navbar-inverse"
>
<div class="navbar-inner shadow">
<?php echo Menu::widget(array(
'activateParents' => true,
'options' => array('class' => 'nav'),
'items' => $navbar,
)); ?>
</div>
</nav>
</header>

<?php $this->breadcrumbs(array(
'homeLink' => false,
'options' => array(
'class' => 'breadcrumb',
'itemprop' => 'breadcrumb',
),
)); ?>

<footer
role="contentinfo"
class="clearfix"
>
<div class="wrapper">
<?php echo Menu::widget($footer); ?>

<p>&copy; <span itemprop="copyrightHolder">PPg Ltd.</span>&nbsp;<span itemprop="copyrightYear"><?php echo date('Y'); ?></span></p>
<p><?php echo Yii::powered(); ?> Template by <a href="http://twitter.github.io/bootstrap/">Twitter Bootstrap</a></p>
</div>
</footer>
<?php Minify::end(); ?>

</div>
<?php $this->endBody(); ?>
</body>

</html>
<?php $this->endPage(); ?>

View ессено раcширен. по мне так вполне изяЧненько 😂 надо ещё поиграться с Twig и рендерами JS/CSS (что бы обусфикаторы с LESS-ом напрямую подключать)...

Ayavryk
На сайте с 11.10.2003
Offline
209
#46
DiAksID:
таки вот что имеем в 2-ке:

Чтобы уклониться от холивара, скажу, что это не соответствует моим скромным представлениям о [strike]прекрасном[/strike] VIEW :)

DiAksID
На сайте с 02.08.2008
Offline
236
#47
Ayavryk:
Чтобы уклониться от холивара, скажу, что это не соответствует моим представлениям о [strike]прекрасном[/strike] VIEW :)

таки это практически дефолт (куда спешить, до релиза как до Пекина) но никто не мешает расширить класс до шедевра в собственных глазах ;)

и никакого холивара - реально радуют изменения. причём с каждым апдейтем изменения именно в нужном направлении...

Ayavryk
На сайте с 11.10.2003
Offline
209
#48
DiAksID:
таки это практически дефолт

Скорее тенденция и YII на ее гребне. PHP-фреймворки начинают на фронте генерировать код отдаленно напоминающий по чудовищности то что еще 10-15 лет назад генерировали продукты MS. И на бэке непонятно кто за что отвечает - программист, верстальщик - нет четкого разделения зон ответственности.

IL
На сайте с 20.04.2007
Offline
435
#49
Ayavryk:
И на бэке непонятно кто за что отвечает - программист, верстальщик - нет четкого разделения зон ответственности.

Если подключить любой шаблонизатор (twig, smarty) - понятнее станет?

Ayavryk
На сайте с 11.10.2003
Offline
209
#50
ivan-lev:
Если подключить любой шаблонизатор (twig, smarty) - понятнее станет?

Подключить то можно, но вектор развития направлен на то чтобы вместо обычного цикла дизайн->верстка->натягивание шаблонов, будет (привычная для любого ASP/.NET-программиста) быстрая генерация (очень удобно программисту) -> приведение сгенерированного кода в соответствие дизайну (очень неудобно верстальщику и фронт-программисту).

И естественно, вместо обычных тегов будет вставляться конструкция типа CHtml::обычный_тег. Если раньше были только проблемы из-за отсутствия унификации шаблонизаторов (Smarty,Twig,бла-бла, native *), теперь будут проблемы из-за отсутствия унификации фреймворков и внутри них реализаций этих самых Самый_лучший_недокументированный_фраймворк/самый_лучший_недокументированный_view_/самый_лучший_шаблонизатор::обычный_тег_еще_непринятого_стандарта

Рано или поздно все (безотносительно языка) пойдет по тому пути, который четверть века назад проложил MS. Мне этот путь не нравится. Но это неизбежно. И что самое печальное, позитив , который проталкивал MS (унификация) умирает, а негатив (разножопица), который он сам породил, живет и побеждает.

При таком раскладе очень хочется чтобы все умерли, а кто-то один остался и написал свой стандарт разработки (я соглашусь с самым уродским). Но это невозможно. Стандарт умер.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий