X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

7 страниц V   1 2 3 4 5 6 7 >
Открыть тему
Тема закрыта
> PHP-программирование для начинающих, Самые азы
ZiTosS
ZiTosS
Topic Starter сообщение 2.3.2008, 3:29; Ответить: ZiTosS
Сообщение #1




Поблагодарили: (5)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
Topic Starter сообщение 2.3.2008, 4:34; Ответить: ZiTosS
Сообщение #2


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

Полный код класса
[php]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;
}

}[/php]

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


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

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

[php]class DirectoryItems {
private $filearray = array();
private $replacechar;[/php]


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

[php] 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("Следует передать имя каталога");
}

}[/php]


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


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

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


[php] public function getFileArray() {
return $this->filearray;
}[/php]


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

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

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

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


Поблагодарили: (3)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
rusja211
rusja211
сообщение 28.12.2008, 4:16; Ответить: rusja211
Сообщение #3


о это пригодится а то я совсем чайник ;) ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
сообщение 14.7.2009, 9:05; Ответить: Banderas
Сообщение #4


Андрей, PHP точно не проще чем HTML =) У одного раздела "Строки" около 100 функций, а есть ещё массивы, функции, циклы, обработка ошибок, ...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
Topic Starter сообщение 15.7.2009, 13:14; Ответить: ZiTosS
Сообщение #5


Banderas, старые темы не подымаем.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 12.9.2009, 10:11; Ответить: yury_mw
Сообщение #6


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

ZiTosS,
а почему у вас в аббревиатуре PHP расшифрованы только две последние буквы, а первая куда делась? ;)
Полная расшифровка такая:
PHP — PHP: Hypertext Preprocessor, что по-русски означает "PHP: препроцессор гипертекста", т.е. PHP — это рекурсивная аббревиатура.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThanDdoR
ThanDdoR
сообщение 12.9.2009, 12:23; Ответить: ThanDdoR
Сообщение #7


Новичкам начавшим изучать php не давно
Очень познавательно будет :rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
Topic Starter сообщение 12.9.2009, 23:27; Ответить: ZiTosS
Сообщение #8


yury, Это аббревиатура используется с древнейших времён, но она притерпела изменения и получила другой смысл, но имя языка не меняли, как был PHP так и остался.
Раньше PHP расшифровывалось - Personal Home Page Tools (Инструменты для создания персональных веб-страниц)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 13.9.2009, 10:32; Ответить: yury_mw
Сообщение #9


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

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

Но вообще-то речь была не о том, а всего лишь про то, что при первоначальной расшифровке была забыта первая буква PHP. ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
Topic Starter сообщение 13.9.2009, 14:03; Ответить: ZiTosS
Сообщение #10


yury, у меня или вообще?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
7 страниц V   1 2 3 4 5 6 7 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Ссылки для вашего сайта из Социальных сетей Twitter facebook vk Ок
8 gafre 560 Сегодня, 13:01
автор: gafre
Открытая тема (нет новых ответов) Ищу SEO специалиста для внутренней оптимизации сайта
Отзовись
4 NYLesha 234 Сегодня, 10:58
автор: NYLesha
Горячая тема (нет новых ответов) Дешевый SSD хостинг на DDR4 с DDOS защитой для 10 сайтов за 69 рублей!
87 HostiMan 32577 Вчера, 15:33
автор: HostiMan
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлы> Хостинг для чайников и спецов со сверхскоростным саппортом от HOSTiQ.com.ua
Хостинг, VIP-хостинг, Реселлинг, VPS, Выделенные серверы
79 HOSTiQ 35246 Вчера, 13:23
автор: HOSTiQ
Открытая тема (нет новых ответов) Блокировка, замедление трафика и штрафы: Госдума готовит «ответку» для YouTube
6 VinogradOFF 595 Вчера, 11:29
автор: san4ozzz


 



RSS Текстовая версия Сейчас: 24.11.2020, 15:26
Дизайн