<?php
//сука блядь ладно, еще раз пишу, но короче уже, без самих потроков, функций, чисто подход.
//опишем всё это говно на примере простой функции сохранения юзера в базу.

//Нубас допустим пишет функцию такого вида:

public function saveUserNoobStyle($name, $email, $password) {
	
	//ну если слышал об инекциях, тот тут у него наверное какая-нибудь фильтрация
	$query = "INSERT INTO users (name, email, password) VALUES (`$name`, `$email`, `$password`);";
	//выполнение запроса что бы сохранить этого юзера в базу
	//заебись
}

//но стоит в системе сущности юзера хоть немного измениться или расшириться, то придется переписывать все связанные с ним функции, в том числе и эту.

public function saveUserFuckedUp($name, $email, $password, $age, $sex, $birthday, $avatar, $skype, $phone, $second_email, $secret_question, $secret_answer) {
	//ну если слышал об инекциях, тот тут у него наверное какая-нибудь фильтрация
	$query = "INSERT INTO users (name, email, password, age, sex, birthday, avatar, skype, phone, second_email, secret_question, secret_answer) 
			VALUES (`$name`, `$email`, `$password`, `$age`, `$sex`, `$birthday`, `$avatar`, `$skype`, `$phone`, `$second_email`, `$secret_question`, `$secret_answer`);";
	//выполнение запроса
	//чет уже не заебись, постоянно в итоге возишься с подобным говнищем, тупо перепиливая старые говнофункции

}

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

$userData = array(
	'name' => "petya", 
	'email' => "qwe@qwe.qwe",
	'password' => "qwerty123"
);

//и сама функция
public function saveUserCoolWay(array $userData) {
	//ну и кароче тут хитровыебанный код, который сам строит запрос в зависимости от того какой у нас передан массив
	$query = "INSERT INTO users";
	foreach (array_keys($userData) as $keys) {
		//докидывает ключи в запрос
		//круто код, прям ух, дербаним массив, всё склеиваем и так далее
		$query .= $key;
	}

	foreach ($userData as $values) {
		//докидывает значения в запрос
		//бла бла бла
		$query .= $value;
		//ну вы поняли надеюсь
	}


	//и для вот массива который привенен в пример выше, он сам построит запрос вида:
	//$query = "INSERT INTO users (name, email, password) VALUES (`petya`, `qwe@qwe.qwe`, `qwerty123`);";
	//выполнение запроса
}

//но если передать в такую функцию например массив вида: 
$userData = array(
	'name' => "petya", 
	'email' => "qwe@qwe.qwe",
	'password' => "qwerty123"
	'sex' => "male", 
	'age' => "15",
	'huy' => "1"
	'pizda' => "0", 
	'jigurda' => "asdasd",
	'nebo' => "qweqwe"
	'allah' => "23123", 
);

$this->saveUserCoolWay($userData);
//то там у себя внутри, она сама попытается выполнить следующий запрос сама
//$query = "INSERT INTO users (name, email, password, sex, age, huy, pizda, jigurda, nebo, allah) VALUES (`petya`, `qwe@qwe.qwe`, `qwerty123`, `male`, `15`, `1`, `0`, `asdasd`, `qweqwe` `23123`);";

//ну и вот уже охуенно смотрится. Как бы заказчик не пиздоебенил юзеров, начиная продавать им всякие вип статусы и прочее, в коде с этим не будет проблем, наша функция уже всё схавает
//но тут наш погромизд замечает, что дескать под каждую таблицу копипаста получается, ведь алгоритм везде примерно одинаковый, и выкидывает все левые функции инсерта в базу, заменяя её на одну


public function saveWatever($where, array $saveData) {
	$query = "INSERT INTO $where";
	foreach (array_keys($saveData) as $keys) {
		//докидывает ключи в запрос
		//круто код, прям ух, дербаним массив, всё склеиваем и так далее
		$query .= $key;
	}

	foreach ($saveData as $values) {
		//докидывает значения в запрос
		//бла бла бла
		$query .= $value;
	}


}

//и в коде в итоге может одной функцией пользоваться И НЕ ЕБАТЬ СЕБЕ НИКОГДА БОЛЬШЕ МОЗГИ
$useData = array(...);
$this->saveWatever('users', $userData);

$paymentData = array(...);
$this->saveWatever('payments', $paymentData);

//ну карчое насколько я понимаю, такой вот подход используется во фреймворках, и вообще является топчиком в плане расширяемости

