Предположим, я что-то поделал на компе, недоделал, закоммитил в локальный репозиторий и запушил на серверзачем вам коммитить в локальный репозиторий?
Но при таком сценарии использования на сервере будет куча коммитов с недоделланым функционалом. Фактически удаленный репозиторий станет лишь местом синхронизации файлов.Ору!! А тебе что нужно? Что бы каждый коммит был законченным изменением? Разбивай тогда задачу на мелкие подзадачи.
Хотя любой корректный PHP-код может находиться внутри пространства имен, только классы (включая абстрактные и трейты), интерфейсы, функции и константы зависят от него.php.net/manual/ru/language.namespaces.definition.php
namespace Code1{
function sayHi(){
print "Передаю привет из code1";
}
CONST A = 1;
}
namespace Code2{
function sayHi(){
print "Передаю привет из code2";
}
CONST A = 2;
}
namespace {
print "файл general.php успешно подключен";
Code2\sayHi();
print "<br>" . Code2\A;
}
1) В чем смысл фрейморков?За тебя уже все написано. Каркас, CRUD/ORM и масса плюшек.
2) Какой учить первый?никто не даст ответа. Индустрия сходит с ума, территория PHP проклята - одному работодателю нужен один фреймворк, другому - другой. Угнаться за всем этим - нереально. В идеале - искать работодателей, готовых вас "вырастить", т.е. взять лишь с минимальным набором знаний, например, теоретических. Все фреймворки знать невозможно. А если и возможно, то это лишь временно - нереально всю жизнь знать все возможности десятка пхпшных фреймворков.
3) Почему способ с самописным роутером, плохой?Фреймворк - это не только роутер. Можно перефразировать вопрос и спросить:
Почему способ с самописным фреймворком плохой?Самописный фреймворк - это не плохо. Как получение опыта - очень даже хорошо. Для себя можешь писать. Но что бы в команду устроиться работать, тебе твой фрейм самописный не поможет. Команде нужна унификация, для этого и существуют фреймворки.
Думаю если немного его усложнить, то и с более сложными проектами справится.бесспорно. реально справится. только он будет заточен только под тебя. и будет ограничен функционал - тебе не хватит жизни, что бы написать то, что делают команды фанатиков.
Как сохранить пользователя авторизованным на сайте?
/**
* Аутентификация пользователя на основании данных из COOKIE.
*
* @param void
* @return Mvs\Module\User\Model\User
*/
public function processAuthentication()
{
if ($this->request->getCookie(self::ID_COOKIE_NAME, 'string') &&
$this->request->getCookie(self::HASH_COOKIE_NAME, 'string')
) {
$user = $this->mapper->findModelById($this->request->getCookie(self::ID_COOKIE_NAME, 'string'));
if (is_object($user) &&
md5($user->getLogin() . $user->getPassword() . Mvs\Registry::getInstance()->SECURITY['AUTHORIZATION_SALT'])
=== $this->request->getCookie(self::HASH_COOKIE_NAME, 'string')
) {
$user->setVisitdate(new Mvs\Type\Datetime());
$user->setIp($_SERVER['REMOTE_ADDR']);
$this->mapper->saveModel($user);
return $user;
} else {
$this->logout();
}
}
return $this->mapper->findModelById(-1);
}
1. При загрузке сразу обрезать изображения и ложить их в рабочие директории под нужными разрешениями, при этом появилась необходимость сразу же и сохранять информацию о изображении в БД не привязывая к какому либо посту (для того, чтобы кроном, периодически удалять те картинки, которые пользователи так и не сохранили вместе с постом).я точно также сделал у себя.
проблема в том, что между этими двумя действиями редко, но может сработать крон, и удалить нужные изображения вместе с ненужнымипроблемы никакой быть не должно - записывай дату добавления изображения и кроном ищи изображения старше часа, например:
$sql = 'SELECT * FROM t
WHERE post_id IS NULL
AND file_date < (NOW() - INTERVAL 60 MINUTE)
ORDER BY id ASC LIMIT ?i';
Я хочу проверять не только длину строки но и скажем чтобы были только латинские буквы и кроме этого отсечь все цифры подчёркивания и прочее.Нужно по классу валидации навешивать на проверяемое свойство.
$login = $_POST['login'];
$email = $_POST['email'];
$password = $_POST['password'];
Есть ли ещё какие способы?Есть. Пересмотреть эту убогую архитектуру. Возможно, использовать объект с необходимыми сеттерами.