Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Application::Control()->Group(123)->Members()->Students()->Student(431)->Show();
function APP(){return Application::Instance();}
// при создании экземпляра объекта приложения (синглтон), автоматически вызывается метод Init(), который отвечает за загрузку конфигов и первичную инициализацию переменных
App()->group=123;
App()->student=431;
// к слову, две предыдущие строки - лишние. Если Вы хотите работать с $_REQUEST, имеет смысл загнать все параметры в свойства объекта Application автоматически на этапе инициализации, либо забросить их в массив и получать доступ к ним через волшебные методы, ну или воспользоваться кодом ниже:
/*
public function __get($name){
return isset($_GET[$name]) ? $_GET[$name] : (isset($_POST[$name]) ? $_POST[$name] : null);
}
*/
// А теперь самое интересное:
APP()->addTree () // добавили в приложение дерево
->InitFromConfig () // проинициализировали дерево из конфига
->ActivateGroup (APP()->group) // сделали активным узел с группой
->ActivateStudent (APP()->student); // подсветили текущего пользователя
APP()->addContentField(APP::C_PERSONAL_PAGE) // добавили в приложение область контента с типом "персональная страница"
->AttachUserProfile( APP()->sudent ); // и отобразили профиль выбранного студента
APP()->Crumple()
->SetTemplate('template1')
->DisableCache()
->EnableGoogleAds()
->Render()
->Print();
// уровень обработки данных.
// грубый пример реализации функционала выборочного изменения частей профиля
if (APP()->ajax){
switch (APP()->action){
case 'changeAvatar':
APP()->Students()->getById(APP()->studentId)
->setAvatar($_FILES['avatar'])
->Save();
break;
case 'changeAvatar':
APP()->Students()->getById(APP()->studentId)
->setName(APP()->name) // все проверки и санация переменных внутри метода
->Save();
break;
}
die(); // это был всего лишь ajax-запрос на изменение. Здесь перед самоликвидацией можно поставить вывод JSON-ответа о том, что все прошло хорошо.
}
public function SetWidth($value) {
$this->width = $with;
return $this;
}
class Students {
public function Group($number) {
return new Group($number);
}
}
class Members
class Teachers
class Students
class Group
class Teacher
class Student
1) abstract class Member
2) сlass Teacher extends Member
3) сlass Students extends Member
4) class Group
Application::Control()->Members()->Students()->Group(123)->Student(431)->Show();
вместо, например, Student::getByGroupAndId(123,431) ну или чего либо подобного.
retrun $this; большее зло, нежели чем $images = new Images();
$images->SetWidth(100);
$images->SetHeight(100);
$images = Images::instance()
->setWidth(100)
->setHeight(100);
$data = db::table('groups')->find($group)->get('name');class ReportSummary extends DocumentsClass {
protected static function makeSummaryReport($report) {
$document = jQuery('div')->addClass('RContainer');
$body = jQuery('div')->addClass('RBody');
# Титул
$document->append(self::documentTitle($reportData, $report));
# Данные
$body->append(self::documentHeader($reportData));
$body->append(self::commonParagraph($reportData, $report, $paragraphCounter));
// ... и так далее ...
return $document->append($body);
}
// ... //
}
Animals->getDog()->getLeg()->run(10)Application::Control()->Members()->Students()->Group(123)->Student(431)->Show();Application::Control()->showStudentsMembers(431);<?php
class a
{
function __get($v)
{
$this->$v = new $v;
return $this->$v;
}
}
class b
{
function say($word){
echo $word;
}
}
$a = new a();
$a->b->say('hello world');
// echo 'hello world'
?>
PHP: Расширенный текучий интерфейс