Jump to content
  • 0

Стандарт кодирования PSR-1


Jey Val Star
 Share

Question

Здравствуйте.

Пытаюсь понять стандарт PSR-1. Не могу понять (вернее представить в коде) следующую фразу

В файлах НУЖНО объявлять новые сивмолы (классы, функции, константы, и т.д.) и не вызывать побочных действий, или же НУЖНО вызывать побочные действия, но не то и другое сразу.

 

Может кто объяснит на примере (более подробного кода)?

И еще - применим ли это стандарт к процедурному стилю?

Спасибо

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

я так полагаю что первое либо - это использование ооп подхода, а второе либо - как раз процедурный.

пример ооп:

<?php// ТИПЫ СУЩЕСТВУЮЩИХ ДАННЫХ//$int = 1; целое число//$string = "Мне 29 лет"; строка//$float = 3.14; числа с плавающей точкой, дробные числа//$bool = false; логический тип данных (true или false)// КЛАССЫ И ОБЪЕКТЫ	//var - устаревший метод объявления переменной в классе. вместо него используйте: public, private и protected	class Human {		var $arms = "2 руки";		var $legs = "2 ноги";	}	$rus = new Human ();	$rus->arms;	echo $rus->arms;	echo "<br>";	$rus->legs;	echo $rus->legs;	echo "<br>";	$rus->arms = "3 руки";	echo $rus->arms;	echo "<hr>";		class Musketter {		var $heart = "отважное сердце";		var $hand = "сильная рука";		var $sword = "шпага";	}	$atos = new Musketter ();	echo "<p><strong>Без изменений</strong></p>";	echo $atos->heart;	echo "<br>";	echo $atos->hand;	echo "<br>";	echo $atos->sword;		echo "<p><strong>С изменениями</strong></p>";	$atos->heart = "отважная душа";	$atos->sword = "дубина";	echo $atos->heart;	echo "<br>";	echo $atos->hand;	echo "<br>";	echo $atos->sword;	echo "<hr>";	// ЦЫКЛЫ FOR И WHILE	$var = "экспрессия";	$c = 0;	//этот цикл эквивалентен while/*	for($i = 0; $i <= 10; $i++) {		echo "i = ".$i." c = ".$c."<br>";		$c = $c+$i;	}*/	while($c <= 10) {		echo "$var<br>";		$c++;	}	echo "<hr>";	// МАССИВЫ	$dog = "собака";	$cat = "кошка";	$turtle = "черепаха";	$array = array('собака', 'кошка', 'черепаха'); //загоняем массив данных в переменную $array и говорим ей что она есть массив	echo $array[0]; //выводим первый элемент массива (отсчет начинается с нуля)		$pets[] = "собака";	$pets[] = "кошка";	$pets[] = "черепаха";	//смотрим содержание массива и его ключей	echo "<pre>";	print_r ($pets);	echo "</pre>";		$pets[1] = "котенок";//изменяем значение элемента массива с ключом 1	//смотрим измененное содержание массива	echo "<pre>";	print_r ($pets);	echo "</pre>";		//еще один способ образовать массив, только не с числовыми ключами, а со строковыми	$names = array(		'Филипп' => 'Киркоров',		'Алла' => 'Пугачева'		);//выводим элемент массива по его ключу [Филипп]/*	echo $names[Филипп];	echo "<pre>";	print_r ($names);	echo "</pre>";*/		//проходимся циклом по массиву и выводим его содержание в виде: ключ->элемент с подсчетом кол-ва элементов	foreach($names as $key => $val) {		echo ++$count." элемент <br>";		echo $key." => ".$val."<br>";	}	echo "<hr>";//ФУНКЦИИ//в подобном виде получается много кода из-за дублирования однотипных действий, с помощью функций упрощается и уменьшается код/*	$s = 10;	for($i = 0; $i < $s; $i++) {		$sum = $sum + $i;	}	echo $sum."<br>";		$s = 8;	for($i = 0; $i < $s; $i++) {		$sum2 = $sum2 + $i;	}	echo $sum2;*/	//функция sum с фходным параметром $s который можно получить из вне функции	function sum($s) {			for($i = 0; $i <= $s; $i++) {			$sum = $sum + $i;		}		echo $sum;	}//входной параметр может быть определен как в переменной, так и на прямую/*	$s = 10;	sum($s);*/	sum(10); //входной параметр напрямую	echo "<br>";	sum(8);	echo "<hr>";//МЕТОДЫ	class My_method {		//Функция объявленная в теле класса - называется методом		function sum($s) {				for($i = 0; $i <= $s; $i++) {				$sum = $sum + $i;			}			//echo $sum;			return $sum; //возвращает результат цикла for во входной параметр $s функции sum()		}		function out() {			echo "длинный, длинный текст";		}		//при создании этого объекта (My_method) с именем класса, создается автоматически конструктор		//и вызывается при инициализации класса ( $obj = new My_method(); )		function My_method($var) {			echo "Привет, я конструктор (constructor) и var = ".$var;		}		//еще один способ вызвать метод конструкт		/*function __construct() {			echo "Привет, я конструктор (constructor)";		}*/	}	$obj = new My_method(10); //так объявляются объкты класса	echo "<br>";	//$obj->sum(10);	$var = $obj->sum(10);// помещаем возвращенный результат в переменную $var	echo $var."<br>";	$var = $obj->out();	echo $var;	echo "<hr>";//НАСЛЕДОВАНИЕ	class Pipl {		var $hands = "2 руки";		var $lags = "2 ноги";		var $head = "1 голова";		function action() {			echo "Я могу ходить";		}	}	//этот класс наследует свойства класса Pipl при помощи extends	class Doctor extends Pipl {		var $knife = "нож";	}	$obj = new Doctor();	echo $obj->head."<br>";	$obj->action();	echo "<br>";		class Father {		var $muskules = "сильные мускулы";	}	class Mother extends Father {		var $eyes = "красивые глаза";	}	//этот класс должен унаследовать св-ва двух классов выше, или любого из них	class child extends Mother {		var $mind = "светлый ум";	}	$obj = new child();	echo $obj->muskules;	echo "<hr>";//МОДИФИКАТОРЫ ДОСТУПА private, protected, public и static	class Brother {		private $big = "большой человек"; //private - используется только внутри своего класса		protected $seksi = "сексуальный"; //protected - может использоваться внутри своего класса и в наследующих его классах		public function work() { //public - можно использовать везде, как в наследующих классах, так и в объекте			echo "я умею работать";		}	}	class Sister extends Brother {		public static $hello = "привет, я статик"; //вызывается напрямую без объявления объекта типа: $obj = new Brother();	}	$obj = new Brother();	$obj->work(); //так как $work является public, то можно использовать везде	echo "<br>";	$obj1 = new Sister();	$obj1->work();//	$obj1->seksi; так будет ошибка, ибо $seksi является protected и используется только внутри класса, либо внутри в наследующих классах	echo "<br>";	echo Sister::$hello; //обращение на прямую к static без объявления объекта?><?php//МАССИВЫ/*	$arr = array();	for($i = 1; $i <= 10; $i++) {		$arr[] = $i;	}	foreach($arr as $key => $val) {		echo "arr[$key] => $val<br>";	}*/	$arr = array(		0 => 1,		1 => 15,		2 => array(			'key1' => 'val1',			'key2' => 'val2'		),		3 => 'hello'	);	echo "<pre>";	print_r($arr);	echo "</pre>";	//НАСЛЕДОВАНИЕ	class Father1 {		var $a = "Я отец и у меня сильные руки";		public function UseHands() {			echo "Я унаследовал от отца сильные руки";			echo '<br>';			echo $this->a;		}	}	class Son extends Father1 {		function SonUseHands() {			$this->UseHands();		}	}/*	$obj = new Father();	echo $obj->UseHands();*/	$son = new Son();	$son->SonUseHands();?>

пример процедурного:

<?php/*$date = array('2014-01-01 00:00:00', '2014-01-11 00:00:00', '2014-02-15 00:00:00', '2015-03-20 00:00:00');$month = array(    '01' => 'Январь',    '02' => 'Февраль',    '03' => 'Март',    '04' => 'Апрель',    '05' => 'Май',    '06' => 'Июнь',    '07' => 'Июль',    '08' => 'Август',    '09' => 'Сентябрь',    '10' => 'Октябрь',    '11' => 'Ноябрь',    '12' => 'Декабрь',);$arr = array('date' => $date, 'month' => $month);foreach($arr['date'] as $key => $value) {	$lenght = 10;	$date = mb_substr($value, 0, $lenght);	if (mb_strlen($value) > $lenght) {		$date = $date;	}    //$val = explode(' ', $value);    $date = explode('-', $date);	$new_date[] = $date;	$year[][year] = $new_date[$key][0];	$month_s[][month] = $new_date[$key][1];	$day[][day] = $new_date[$key][2];}*/if(empty($_GET['nick'])) {$nick = 'LunatiK';} else {$nick = $_GET['nick'];}$members = array('Great Rash', 'psywalker', 'sigma77', 'swetlana', 'rus', 'SelenIT', 'LunatiK');$is_loshara = array_search($nick, $members, true);if ($is_loshara) {echo "<p>Я номер ".($is_loshara+1)." в списке лошар Rus'a!</p>\n";echo "<p>Нас уже ".count($members).":</p>\n";} else {echo "<p>Меня нет в списке лошар Rus'a :(</p>\n";echo "<p>Их уже ".count($members).":</p>\n";}echo "<ol>\n";foreach($members as $nick) {echo "\t<li> Лошара ".$nick."</li>\n";}echo "</ol>\n";echo "<p>Кто следующий?</p>\n";//Тока не говорите что мне на работе заняться нечем!?> <?php$members = array('Эдик', 'Эдик', 'Эдик', 'Сашка', 'Сашка', 'Сашка', 'Рус', 'Рус', 'Рус');$t = array_count_values($members);	foreach($t as $key => $val) {		echo $key." => ".$val."<br>";	}?>
Link to comment
Share on other sites

  • 0

Эмммм, а разве переменные в классе объявляются не с помощью public, private и protected? Похоже, я отстал от прогресса.

да не, это походу я несколько устарел морально... :)

но там есть примеры с public, private и protected

поправлю.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy