- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
<?php
function getCategoryText($id){
$cats = FNewsCategory::model()->getCategories();
return $cats[$id];
}
?>
$this->widget(
'zii.widgets.grid.CGridView', array(
'id' => 'newsListForm',
'ajaxUpdate' => false,
'dataProvider' => $model->search(),
'filter' => $model,
'cssFile' => false,
'pager' => array(
'class' => 'CLinkPager',
'pageSize' => 50,
'cssFile' => false,
),
'columns' => array(
'id',
'header',
array(
'name' => 'content',
'value'=>'mb_substr($data->content, 0, 300) . "..."'
),
'ndate',
array(
'name' => 'fixed',
'type' => 'raw',
'filter'=>CHtml::dropDownList(
'FNews[fixed]',
isset($_GET['FNews']['fixed']) ? $_GET['FNews']['fixed'] : '',
array('0'=>'Нет','1'=>'Да'),
array('empty' => 'Фильтр отсутствует')
),
'value'=>'($data->fixed == "1") ? "Да" : "Нет"',
'htmlOptions' => array('width' => '140')
),
array(
'name' => 'rubric_id',
'type' => 'raw',
'filter'=>CHtml::dropDownList(
'FNews[rubric_id]',
isset($_GET['FNews']['rubric_id']) ? $_GET['FNews']['rubric_id'] : '',
FNewsCategory::model()->getCategories(),
array('empty' => 'Фильтр отсутствует')
),
'value'=>'getCategoryText($data->rubric_id)',
'htmlOptions' => array('width' => '140')
),
array(
'name' => 'lang',
'type' => 'raw',
'filter'=>CHtml::dropDownList(
'FNews[lang]',
isset($_GET['FNews']['lang']) ? $_GET['FNews']['lang'] : '',
array('ukr'=>'Украинский','ru'=>'Русский','en'=>'Английский'),
array('empty' => 'Фильтр отсутствует')
),
'htmlOptions' => array('width' => '60')
),
array(
'class' => 'CButtonColumn',
'template' => '{update}{delete}',
'buttons' => array(
'update' => array(
'click' => $updateDialog,
'url' => 'Yii::app()->controller->createUrl("admin/news",array("action"=>"newsList","make"=>"update","id"=>$data->primaryKey))',
),
'delete' => array(
'url' => 'Yii::app()->controller->createUrl("admin/news",array("action"=>"newsList","make"=>"delete","id"=>$data->primaryKey))',
),
),
),
),
)
);
Чем является getCategories:
public function getCategories()
{
$array = CHtml::listData(FNewsCategory::model()->findAll(), 'rubric_id', 'rubric_nameRu');
return $array;
}
Типичный шаблон на фреймворках, в данном случае на Yii 1.1 и от тим-лида!
Да-да, функция прямо в шаблоне и вызывается из цикла. :)
Другое дело, что его простота послужила причиной засилья долбоебов. :)
P.S.: Кстати, "Битрикс" в госкорпорациях модно использовать, вероятно, по той причине, что не разбирающемуся в программировании госзаказчику достаточно показать, насколько дохуя там директорий и файлов с тысячами строк кода каждый, и тот решит, что, дескать, да - некая масштабная работа была проведена, и можно отвалить пару-тройку миллионов. Со скриптом из одной директории и десяти ссаных файликов такой номер не прокатил бы.
Так и есть. https://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
Архитектура не нужна. нужно ПИСАТЬ КОДДД1111
Вы видели, во что превращаются форумные движки после добавления новых фишек? В том же phpBB отказались от идеи фреймворка, MVC, и теперь в нём куча дублирующегося кода и довольно сложно что-нибудь допилить.
http://www.discourse.org/
http://spirit-project.com/
Вот нахрена нужно 100500 функций такого типа:
Digitalus, Magento, Social Engine, Pimcore, Slys, Cultsoft в ту же топку.
Пыховцы слышали звон, да не знают где он. У них все такое. "SPL" -- несмешная пародия на стандартные библиотеки других ЯПов, частично реализованные модификаторы доступа -- пародия на их аналоги в других языках, фреймворки пародии итд. Не Язык, а смех на палочке.
Бля, типизация и правда непричем
Извращенцы.
так может говорить только тот, кто ни одного другого языка в жизни не видел
psr-4
Xz\Ololo\SuperClass
лежит в
src/Xz/Ololo/SuperClass.php
а в java
xz.ololo.SuperClass
внезапно по тому же принципу.
Куча ключевых слов, интерфейсы, ООП - все это если не спизжено, то точно подражает.
Про все спизжено - да, загнул
>> Xz\Ololo\SuperClass
>> лежит в
>> src/Xz/Ololo/SuperClass.php
>> а в java
В си mymodule лежит в mymodule.c
А в VisualBasic в mymodule.bas
внезапно по тому же принципу.
>>Куча ключевых слов
В PHP есть ключевое слово class, и в C++ тоже
нынешний пых - это С++ c динамической типизацией.
>>интерфейсы
В PHP есть интерфейсы, и в ObjectiveC тоже
нынешний пых - это ObjectiveC c динамической типизацией.
>>ООП
нынешний пых - это Smalltalk с функцией print_r
И да: в джаве тоже есть динамическая типизация.
interface Animal {
public void eat();
public void travel();
}
vs
interface Animal
{
public function eat(): void;
public function travel(): void;
}
сходства определенно есть
и что обсуждается - https://wiki.php.net/rfc/generics
А многие из них в C# еще, а часть вообще пришла их C++.
>>и что обсуждается
Генерики есть примерно везде, начиная с С++сных шаблонов:
https://en.wikipedia.org/wiki/Generic_programming
пыховцы конечно очень смешные: сначала делают ЯП без стат. типизации, затем, по кусочкам, ее туда тянут. Расшибут лоб о ковариантность и контрвариантность, как пить дать.
symfony/phalcon вполне нормальные
http://php.net/manual/ru/book.xhprof.php - от фейсбука профайлер
так что при желании вполне можно закосить
"хватает" это https://docs.oracle.com/javase/7/docs/api/ или https://msdn.microsoft.com/en-us/library/system(v=vs.110).aspx
А в "spl" мы видим примерно пару коллекций: ни работы с локалью, ни с текстом, ни с HTTP, ни с сетью ("ПОД ВЕБ" же все таки).
>>http://php.net/manual/ru/book.xhprof.php - от фейсбука профайлер
Профайлер это вот http://i.imgur.com/5Jvyvgq.png
Или вот https://docs.elementscompiler.com/Platforms/Cocoa/Instruments/Using_Instruments-_3-Leaks.png
В пыховом даже кучу нормально не посмотреть
Мне просто нравится сраться.
Уточните, завезли ли его в PHP 5.6 (я уже не говорю про PHP 7.x).
https://sandro-keil.de/blog/2015/02/10/php-profiling-tools/
В C#, например, или в Kotlin, типы выводятся и проверяются сами в момент компиляции.
Но можно и HH в фоне запустить.
Конечно это не так клево, но тоже помогает. Настоящий PHP стайл.
>>HHVM supports Hack, PHP 5 and the major features of PHP 7. We are aware of minor incompatibilities,
Отличный выбор. Удобно и стабильно.
Тогда все языки одинаковые - везде есть ООП, процедурное программирование, ФП.
Никто на PHP не пишет в стиле жабы. (Ну кроме фреймворщиков. Писали бы уже на жабе тогда, а то дрочка какая-то :) )
И чем плох PHP?
:)
Зачем для веба нужен особенный язык?
Веб это всего-лишь интерфейс.
А какой язык лучше для консоли?
А для GUI?
>>И чем плох PHP?
ну что мне, опять про "фрактал плохого дизайна" рассказывать?
Поэтому прошу не съезжать.
А если не веб-разработчик, то вообще не лезть. :)
>ну что мне, опять про "фрактал плохого дизайна" рассказывать?
Что лучше и чем именно? :)
Не существует "языков для веба". Веб ничем не отличается от других областей.
Но Вы, вероятно, ничего кроме веб-сайтов на PHP не делали, потому не понимаете такие очевидные вещи.
>>А если не веб-разработчик,
У моих программ бывают и веб интерфецсы тоже.
>>Что лучше и чем именно?
Python, Ruby, Kotlin, C#, что угодно.
>>чем именно
архитектурой, фреймворками, стандартной библиотекой, модульностью, средствами разработки, дебага и профилирования, коммунити, см "фрактал плохого дизайна" в общем
Parser 3. Попробуй применить его для чего-то другого...
Вот ещё занятный пример из прошлого
https://en.wikipedia.org/wiki/RTML
О_о
А SPL - то хер пойми что.
Глубже, глубже!..
Объясни мне одну вещь, как ты ешь этим ртом?