Перейти к содержимому

Реферальная программа Мегаплана


PHP-программирование для начинающих

#1 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8
0

Отправлено 02 Март 2008 - 02:29

Что такое PHP?

PHP (PHP: Hypertext Preprocessor — «препроцессор гипертекста») — скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных, файлами, сокетами, протоколами, графикой и многим другим. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров. Входит в LAMP — «стандартный» набор для создания веб-сайтов (Linux, Apache, MySQL, PHP (Python или Perl)).

Начальные познания в программировании

Операнд в языках программирования ― аргумент операции; грамматическая конструкция, обозначающая выражение, задающее значение аргумента операции.
В зависимости от положения операнд относительно знака операции различают префиксные (напр., sin(x)), инфиксные (например, a + c) и постфиксные (например, x^3) операции

Оператор (Инструкция) — наименьшая автономная часть языка программирования; команда. Программа обычно представляет собой последовательность операторов.

Фу́нкция — в программировании — один из видов подпрограммы. Особенность, отличающая её от другого вида подпрограмм — процедуры, состоит в том, что функция возвращает значение, а её вызов может использоваться в программе как выражение.

С точки зрения теории систем, функция в программировании — отдельная система (подсистема, подпрограмма), на вход которой поступают управляющие воздействия в виде значений аргументов. На выходе системы получаем результат выполнения программы, который может быть как скалярной величиной, так и векторным значением. По ходу выполнения функции могут выполняться также некоторые изменения в управляемой системе, причём как обратимые, так и необратимые.

Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного перехода).

Синтаксис языка

В PHP нет строгой типизации
В конце каждой выполненой операции ставится символ окончания строки ";"
$Имя_переменной = 1;


Комментарии
// - однострочные комментарии(из Си), с любого места
# - однострочные комментарии(из Perl), с начала строки
/* комментарий */ - многострочный комментарий(из Си)

Переменные
поименованная либо адресуемая иным способом область памяти, имя или адрес которой можно использовать для осуществления доступа к данным, находящимся в ней (по данному адресу). Перед названием переменной в PHP ставится знак "$".
$param = "значение переменной";


Константы
Ячейка памяти, которая хранит статистическое(постоянное) значение.
Или другими словами способ адресования к данным, изменение которых рассматриваемой программой запрещено.
Определение костанты:
define(NAME_CONSTANT ,"значение");


define(STR ,"строка");

$param = STR;

echo $param; //Выведет "строка"


Массивы
Массив — это объект данных, в котором хранится несколько единиц данных, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.
Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.
Массивы бывают индексационные(индекс) и ассоциативные(ассациация). Это значит, что ключ к элементу представляет из себя число(индекс) или строку(ассоциацию).
В PHP массив так же является типом переменной.
$array[индекс];

или
$array = array('значение1', ..., 'значениеN');

Пример:
$array[0] = "Вася";

$massiv[1] = "Котся";

......

$array[n] = "name";
или
$massiv = array("Вася", "Костя", ..., "name");


Условия
Что такое условие. Это логический оператор, котрый решает по какому пути двигаться дальше, в зависимости от условия.
Синтаксис:
if (условие) {

//Если верно

операторы;

} else {

//Если неверно

операторы;

}

Пример:
if ($param1 > $param2) {

echo $param1;

} else {

echo $param2;

}


Циклы
Что такое цикл. Это оператор повторения куска кода для выполнения повторяющихся действий.

цикл for(с предусловием)
for (присвоение счётчика; условие; изменение счётчика)


for ($i = 0; $i<10; $i++) $param = $param + $i; // 0+1+2+...+9


цикл foreach(Для работы с массивами)
foreach (имя_массива as ключ=>значение)


foreach ($array as $key=>$value) echo $key.$value;


цикл while(с предусловием)
while (условие)

{

операторы;

}


while ($i<10) $param = $param + $i; $i++;

 

 

  • 0

#2 ZiTosS

ZiTosS
    Topic Starter
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 02 Март 2008 - 03:34

Классы в PHP5(4)
Класс1. Выборка файлов из каталога(формирование заголовка)

Полный код класса
class DirectoryItems {
private $filearray = array();
private $replacechar;

public function __construct($directory, $replacechar = "_") {
$this->directory = $directory;
$this->replacechar = $replacechar;
$d = "";
if(is_dir($directory)) {
$d = opendir($directory) or die("Не удалось открыть каталог.");
while(false !== ($f = readdir($d))) {
if(is_file("$directory/$f")) {
$title = $this->createTitle($f);
$this->filearray[$f] = $title;

}
}
closedir($d);
} else {
die("Следует передать имя каталога");
}
}

private function createTitle($title) {
$title = substr($title, 0, strrpos($title, "."));
$title = str_replace($this->replacechar, " ", $title);
return $title;
}

public function getFileArray() {
return $this->filearray;
}

}


Как создать объект и вывести обработку на экран
include("./DirectoryItems.class.php");
$obj = new DirectoryItems("directory"); //ВНИМАНИЕ директория directory должна существовать
foreach($obj->getFileArray() as $key=>$value)
{
echo "<b>ФАЙЛ</b> ". $key ." - <b>ЗАГОЛОВОК</b> ". $value ."<br>";
}



Теперь разбирём код по кускам

Объявляем класс DirectoryItems и свойства класса(В PHP5 появились вместо var ограничители доступа private и public, есть и другие, но остановимся на этих двух. private - определяет свойство или метод как закрытый, и дсотуп к нему может осуществляться только внутри класса; public - вседоступное свойство или метод)

class DirectoryItems {
private $filearray = array();
private $replacechar;



Волшебная функция __construct() называется так, потому что данную функцию не нужно вызывать самому, она вызывается при создании объекта данного класса. В начале мы присваеваем свойствам объекта значения переданные при создании объекта. Заметим, что параметры заданные по умолчанию не обязательно указывать при создании объекта, но если мы хотим изменить данный параметр со стандартного на новый, то при создании объекта надо передать данные параметры!
Проверяем является-ли $directory каталогом, если да, то пытаемся открыть каталог, при неудачи выведется
"Не удалось открыть каталог."
А при неправильно заданном имени папки или если таковой не существует будет выведено:
"Следует передать имя каталога".
Если каталог открылся, мы в цикле с условием перебираем все файлы из этого каталога с 1-го по последний, присваеваем переменной $title заголовок файла, возвращённый из функции createTitle()
Затем заносим в ассоциативный массив(ключ=>значение) имя файла(КЛЮЧ) и заголовок(ЗНАЧЕНИЕ)
Вот и всё что делает конструктор класса... Создаёт массив, который мы будем выводить.

  public function __construct($directory, $replacechar = "_") {
$this->directory = $directory;
$this->replacechar = $replacechar;
$d = "";
if(is_dir($directory)) {
$d = opendir($directory) or die("Не удалось открыть каталог.");
while(false !== ($f = readdir($d))) {
if(is_file("$directory/$f")) {
$title = $this->createTitle($f);
$this->filearray[$f] = $title;
}
}

closedir($d);
} else {
die("Следует передать имя каталога");
}

}



Функция createTitle() небольшая, но важная функция в классекак мы уже заметили данную функцию можно использовать только внутри класса, что мы и делаем в функции __construct().
И так, что же делает данная функция. Как мы видим данной функции передаётся параметр $title, который получает значение имени файла. Далее мы отсекаем расширение файла, а точнее, то что идёт после первой точки, а также и саму точку.
Строчкой ниже у нас с помощью стандартной функции str_replace() преобразуются все символы, которые мы указали, как заменяемые символы(второй параметр при создании объекта, он указывает как будет представлен заголовок файла. К примеру у нас имеетсяфайл street_life.jpg, при стандартном "_" символе замены мы получим в $title = street life) Можно передавать массив заменяющихся символов.
Последняя строка кода возвращает полученное новое значение в $title


   private function createTitle($title) {
$title = substr($title, 0, strrpos($title, "."));
$title = str_replace($this->replacechar, " ", $title);
return $title;
}


И наконец самая маленькая, но не уступающая функции __construct(), функция getFileArray(), которая является публичной, и которую можно вызвать при помощи обращения объекта вне класса.
$obj->getFileArray() так мы её вызываем.


   public function getFileArray() {
return $this->filearray;
}



Как мы видим возвращаемое значение при вызове $obj->getFileArray() будет МАССИВ, который мы можем обработать как хотим. Я в свойм примере показал вывод имени файла и его заголовка в Каталоге.

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

Если кому нибудь понравилась моя статья, отпишите в этой теме, и я продолжу. Могу показать как объединив 2 класса можно сделать вывод картинок с нужным нам размером из папки!

Кстати этот класс очень легко интерпритируется для PHP4, просто все свойства имеют атрибут var вместо public и private. А у всех методов вообще убрать ограничители public и private
  • 0

#3 rusja211

rusja211
  • Пользователь
  • 6 сообщений
  • Репутация: 0

Отправлено 28 Декабрь 2008 - 03:16

о это пригодится а то я совсем чайник ;) ;)
  • 0

#4 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 14 Июль 2009 - 08:05

Андрей, PHP точно не проще чем HTML =) У одного раздела "Строки" около 100 функций, а есть ещё массивы, функции, циклы, обработка ошибок, ...
  • 0


#5 ZiTosS

ZiTosS
    Topic Starter
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 15 Июль 2009 - 12:14

Banderas, старые темы не подымаем.
  • 0

#6 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 12 Сентябрь 2009 - 09:11

PHP (Hypertext Preprocessor — «препроцессор гипертекста»)

ZiTosS,
а почему у вас в аббревиатуре PHP расшифрованы только две последние буквы, а первая куда делась? ;)
Полная расшифровка такая:
PHP — PHP: Hypertext Preprocessor, что по-русски означает "PHP: препроцессор гипертекста", т.е. PHP — это рекурсивная аббревиатура.
  • 0

#7 Arukard1

Arukard1
  • Пользователь
  • 193 сообщений
  • Репутация: 0

Отправлено 12 Сентябрь 2009 - 11:23

Новичкам начавшим изучать php не давно
Очень познавательно будет :rolleyes:
  • 0

#8 ZiTosS

ZiTosS
    Topic Starter
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 12 Сентябрь 2009 - 22:27

yury, Это аббревиатура используется с древнейших времён, но она притерпела изменения и получила другой смысл, но имя языка не меняли, как был PHP так и остался.
Раньше PHP расшифровывалось - Personal Home Page Tools (Инструменты для создания персональных веб-страниц)
  • 0

#9 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 13 Сентябрь 2009 - 09:32

Раньше PHP расшифровывалось - Personal Home Page Tools (Инструменты для создания персональных веб-страниц)

ZiTosS,
не вопрос. Конечно, _раньше_ так расшифровывалось. Но это был немного другой язык и с тех пор как его в 1997г с нуля переписали 2 еврея из Хайфы под свои задачи и появился PHP3, оно уже так не расшифровывается. ;)
Ежли кому интересна история и будущее PHP можно на вики почитать.

Но вообще-то речь была не о том, а всего лишь про то, что при первоначальной расшифровке была забыта первая буква PHP. ;)
  • 0

#10 ZiTosS

ZiTosS
    Topic Starter
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 13 Сентябрь 2009 - 13:03

yury, у меня или вообще?
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru