Документування PHP-коду. DocBlock коментарі

Каплан А. Б.

Французька школа «Анналів» про історію культури

Збірник робіт з різних галузей гуманітарного знання Manefon

http://www.manefon.org/show.php?t=0&txt=2

Упродовж XX ст. інтерес до вивчення історії культури поступово зростав. На початку і першій половині століття історико-культурні дослідження мали переважно локальний характер, обмежувалися приватними проблемами. Коли 1919 р. побачила світ книга голландського історика і філософа Й. Хейзинги «Осінь середньовіччя» (7), сучасники не змогли оцінити її значення у розвиток суспільних наук. Минали десятиліття, а книга Хейзінгі не старіла, вона ставала дедалі сучаснішою. У післямові до її російського видання A. B. Михайлов пише, що унікальна якість цієї книги полягає у здатності занурювати читача в читання нібито захоплюючого роману і в той же час змусити його постійно усвідомлювати, що він вивчає працю найкропітнішого дослідника (7, с. 413). А. В. Михайлов показує, що Й. Хейзінга йде шляхом оповідання, а не шляхом нав'язливого тлумачення фактів. Й. Хейзінга відчинив вікно в XV ст. Європи, у вік жорстокий і кривавий, він прагнув описати справжнє ставлення людей пізнього середньовіччя до мистецтва. Варто зазначити, що Й. Хейзінга не ставив за мету всебічного вивчення народного менталітету, хоча в його книзі і містяться цінні спостереження з історії народної культури. Переважно її зміст присвячено менталітету вищих верствсуспільства та інтелігенції XV ст. Безумовно, читачеві кінця XX ст., знайомому з останніми досягненнями історичної психології, багато здасться дещо наївним у книзі Й. Хейзінгі. Проте слід пам'ятати, що саме блискуча спроба голландського вченого описати специфічні рисимислення людей середньовіччя спонукало наступні покоління істориків на вирішення вузлових завдань історичної психології.

Термін «історична психологія» виник 30-ті роки XX в. і пов'язаний головним чином із діяльністю вчених, що згрупувалися навколо паризького журналу «Аннали», який почав виходити в 1929 р. Засновниками журналу стали великі французькі історики Марк Блок та Люсьєн Февр, які ввели в лексикон історика поняття «менталітет». У сфері уваги М. Блоку передусім були громадські зв'язки, соціальні структури. З його точки зору, «середньовічне суспільство є певною єдністю всіх аспектів: виробництва, відносини панування та залежності, політичної влади, світосприйняття, причому соціальний устрійта аграрна структура стоять у М. Блоку на першому місці» (2, с. 512). Втім, це не означає, що питання психології та культури М. Блока не цікавили. Навіть у спеціальних працях, присвячених історіїсільського господарства, він приділяє чимало місця психології селянина, а своїх капітальних роботах М. Блок досяг великих успіхів у сфері розробки історії менталітету. Безперечно, що великий майстер залишив би ще більшу спадщину, якби не був убитий під час війни нацистськими катами.

Л. Февр, як зазначає А. Я. Гуревич, вважав за краще поняття «структура» більш розпливчасті терміни: «ритми, пульсації, течії та контртечі» (2, с. 512). Ці поняття були ближчі Л. Лютого як історику ідей, оскільки він прагнув продуманого синтезу історичних і психологічних наук. У роботах Л. Лютого простежується методика психологічного підходу до історії. Л. Февр вважався унікальним знавцем XVI ст., але його книги про Лютера і про Раблю і статті «Капіталізм і реформація» (6, с. 203-216), «Торгівець XVI століття» (6, с. 217-236), «Головні аспекти однієї цивілізації» (6, с2м26). використовувати унікальний методичний матеріал. Л. Февр остаточно зруйнував традиційні уявлення в історичній науці щодо двох типів свідомості - середньовічного та ренесансного - як про якісь чітко окреслені структури; він прагнув показати неповторність та унікальність менталітету кожного історичного періоду. Показ своєрідності мислення європейського купця XVI в., вміння яскраво зобразити цю неповторність — одна з суттєвих рис творчості історика та письменника Л. Лютого. Коротко і образно він описує, наприклад, великий переворот у свідомості художника на початку XVI ст.: «... цей працівник ручної праці, цей «механізм» - насправді він щось зовсім інше, ніж неосвічений ремісник, що приносить користь. Бо, якщо він талановитий, якщо він може своїм пензлем відтворювати життя, воскресати минуле, вдягаючи його в живі фарби сьогодення, то він - один з великих цього світу, що зрівнявся знатністю і шляхетністю в очах освічених людей і творців з принцами і королями. Хіба Тиціан не вартий того, щоб Карл V підняв з підлоги втрачену ним кисть? Трохи раніше, коли Альбрехт Дюрер залишав блискучу Венецію, щоб повернутися до своєї буржуазної Німеччини, - хіба не сказав він у скорботі серцевого слова, сповненого значення: «У Венеції я дворянин. У Нюренберзі я жалюгідний бідняк» (6, с. 328).

Втім, водночас Л. Февр стверджує, що художник початку XVI ст. не був людиною Нового часу. У його свідомості та в його способі життя химерно сплелися риси середньовіччя та Нового часу. Але людина кінця XVI ст. мав особливий менталітет. Менталітет «перехідного періоду» - надзвичайно складне явище, у XX ст. вчені у різних країнах почали серйозно його вивчати. Великий внесок у дослідження суспільної свідомості зробив великий російський культуролог М. М. Бахтін. А. Я. Гуревич вважає, що Л. Февр і М. М. Бахтін відкрили дві унікальні риси суспільної свідомості XVI ст.: Февр розкрив своєрідність релігійної культури раблезіанської епохи, Бахтін досліджував і описав величезний світ сміхової карнавальної культури пізнього середньовіччя.

Заслуга Л. Лютого та М. Блоку полягала також у тому, що вони заклали основи теорії ментальності. Роботи цих істориків дозволили усвідомити, що оцінка вчинків історичних персонажів із погляду сучасних стереотипів є спотворенням історії. Люди минулих століть відрізнялися від нас, перш за все, своїм менталітетом, тобто способом мислення, поведінки, реакцією на довкілля. Як не була розвинена була індивідуальність у окремої людини, «психологічна матриця» її століття накладала на її свідомість особливий відбиток. Знайти хисткий кордон між індивідуальністю та ментальністю – важке, але захоплююче завдання для історика. Насамперед необхідно охарактеризувати різноманіття ментальності: соціальна, релігійна, культурна, національна. Ментальність не можна повністю прирівнювати до таких явищ, як свідомість або сфера несвідомого, хоча між цими трьома явищами існує глибокий зв'язок.

М. Блок і Л. Февр були чудовими художниками слова, вони могли створювати картини минулого подібно до Хейзінгу, але їхній дослідницький скальпель одночасно і вельми точно препарував минуле. Вони практикували синтез наук, насамперед історії, психології, соціології, культурології і т. д. Завдяки застосуванню синтетичного методу багато традиційних історичні джерела, Які вже багато років вважалися до кінця дослідженими, стали знову «випромінювати інформацію».

Наступне покоління істориків – Жак Ле Гофф, Жорж Любі, Робер Мандру, Еммануель Леруа Ладюрі – продовжувало роботу своїх вчителів. А. Я. Гуревич називає Ж. Ле Гоффа «істориком ментальностей». Ж. Ле Гофф вказував на труднощі вивчення цього явища, оскільки воно дуже внутрішньо суперечливе. А. Я. Гуревич підкреслює в післямові до одного з праць Ж. Ле Гоффа «... способи орієнтації в соціальному і природному світі є свого роду автоматизм думки: люди користуються ними, не вдумуючись у них і не помічаючи їх, на кшталт мальєрівського пана Журдена, який говорив прозою, не здогадуючись. Системи цінностей далеко не завжди, та й не повністю, формулюються моралістами чи проповідниками - вони не можуть бути імпліковані в людській поведінці, не зведені в стрункий продуманий кодекс »(1, с. 356).

Ж. Ле Гоффа цілком можна назвати головним теоретиком проблеми менталітету. У Росії її найглибше розробляє цю тему А. Я. Гуревич (1, 2). Він також є історіографом Школи Анналів. У його статтях аналізуються досягнення французьких вчених у галузі розробки проблем історії Нового часу (XVI-XVIII ст.). Слід зазначити, що досягнення сучасних істориків у цьому плані дуже великі. Велика кількістьмонографій та статей просто пригнічує читача «Щорічника французької національної бібліографії». Навіть література фондів бібліотеки ІНІОН РАН з цього питання настільки велика, що одна людина безсилий піддати аналізу все це багатство, тут потрібна праця низки фахівців. Тому в наше завдання входить огляд тих робіт, які ще недостатньо знайомі широкій аудиторії.

Один із таких авторів – Робер Мандру. А. Я. Гуревич у післямові до збірки робіт Л. Лютого називає Р. Мандру продовжувачем справи Школи «Анналів». Мандру не відокремлював історію людських емоцій та настроїв від загальної соціальної історії. Емоційність, духовне життя гранично пов'язана із соціальною дійсністю, вважав він. Якщо Л. Февр вивчав унікальність менталітету певний період, то Р. Мандру цікавила взагалі динаміка зміни ментальностей у зв'язку з розвитком соціально-економічних структур. Зокрема, Р. Мандру у монографії «Магістрати та чаклуни» (11) зумів блискуче простежити, як змінилася колективна психологія французького чиновництва протягом XVII ст. по відношенню до носіїв «диявольських сил» - від дикої нетерпимості та до цивілізованої толерантності. Р. Мандру також показав, наскільки складними є метаморфози ментальності: «Будь-яка історична психологія, будь-яка історія ментальностей є безсумнівно історія соціальна. Але водночас вона є і історію культури» (11, з. 527).

Розглядаючи історію культури у Франції, Р. Мандру зазначає, що досі тут панує теорія філії ідей, яка не враховує таких явищ, як історична психологія та менталітет. Р. Мандру наполягає на необхідності синтезу історії релігії та історії культури, вивчення низки джерел, які могли б пролити світло на психологію авторів та їх сучасників, дали б можливість зрозуміти особливості творчості та сприйняття ідей у ​​певну епоху. Багато уваги Р. Мандру приділяє народній культурі. У цій галузі досі, вважає він, панує традиційна методика фольклору: для розуміння розвитку народної культури потрібен синтез фольклору з історичною психологією та іншими дисциплінами (10, с. 152). Р. Мандру підкреслює, що необхідно простежувати еволюцію культури у селі, у провінційних містах та столиці. Найбільш нерухомою була сільська культура. Р. Мандру досліджував порівняно численну «літературу книгоношів», тобто сільських торговців книгами (9, с. 154-157). Протягом XVI-XVIII ст. зміст книг воістину не змінюється: примітивні оповідання з священної історії, житія святих, повісті про діяння великих монархів (особливо Карла Великого), тлумачення снів, казки - ось що знаходило попит у селі навіть в епоху Вольтера та Руссо.

Втім, говорячи про відносну нерухомість сільської культури, Мандру зазначає, що середньовічна традиція була живуча і серед провінційного дворянства. Вивчення списків назв книг із бібліотек провінційних дворян свідчить про панування у цих бібліотеках праць із священної історії та лицарських романів навіть у XVIII ст. (10, с. 163). Проте спосіб життя провінційного дворянства протягом XVII-XVIII ст. змінився: більшість замків і навіть укріплених будинків (мезонфор) було знищено за наказом Рішельє, значна частина дворян переселилася до міст, багато провінційних дворян значно збідніли. Не останню роль у занепаді провінційного дворянства зіграла ціннісна установка, що зводилася до того, що справжній дворянин не повинен займатися господарством чи комерцією, а лише турнірами та полюванням. Але мода на турніри відмерла наприкінці XVI ст., а полювання, яке супроводжувалося зазвичай потравою полів, викликало ненависть у селян. Проте що більше погіршувалося становище дрібного дворянства, тим більше чіпко воно трималося збереження своїх станових привілеїв. Саме у XVIII ст. набуває популярності вчення про «блакитну кров» (предтеча расизму). Це вчення на той час було спрямоване проти парвеню, вискочок, тобто титулованих кар'єристів, вихідців із буржуазного середовища, що процвітали при дворі.

У другій половині XVII ст. змінився спосіб життя Московського дворянствата його психологія. Дворяни перетворилися з васалів короля на придворних. Замість старої феодальної ієрархії виникла нова придворна ієрархія складніша і залежить від волі однієї людини - короля. У містах виникали дрібні двори правителів провінції за моделлю Версальського двору. Двір фактично позбавляв навіть найродовішого дворянина феодальної вільності і підпорядковував суворому диктату етикету. За багаторічне царювання Людовіка XIV змінилося три покоління вищого та середнього дворянства, у середу якого проникали численні представники чиновництва. Не можна сказати, що аристократи не протестували проти свого приниженого становища, але їхній протест мав своєрідний характер лібертинажу - вільнодумства та скептицизму (10, с. 167). У XVIII ст. аристократичні кола не приховували свого вільнодумства і навіть атеїзму.

Проте це отже, що з лібертенів гуртка великого Конде, принца крові, відтисненого лідерами Людовіка XIV від годувала влади, до діячів епохи Просвітництва йде пряма лінія. Справжня історія була значно складнішою. XVII ст. - це вік панування католицької церкви у Франції, заборони протестантизму. Життя католицької церкви в цій країні було внутрішньо суперечливим. З одного боку, церква активно бореться за свій вплив у народі: з'являється чимало талановитих проповідників-організаторів, різних світсько-релігійних громад, які допомагали біднякам. З іншого боку, у XVII ст. йшла запекла боротьба у вищих церковних колах між єзуїтами та янсеністами щодо свободи волі. У цій боротьбі взяв участь великий Паскаль. Єзуїти звинувачували янсеністів у кальвіністській єресі, янсеністи звинувачували єзуїтів в аморалізмі та лицемірстві. Ця боротьба ускладнила становище сільських кюре, які не знали, до якого табору приєднатися. До 1715, коли смута закінчилася тимчасовою перемогою єзуїтів, можна стверджувати про занепад релігійності в середовищі нижчого духовенства.

Аристократи-лібертени мали певний вплив на суспільство, але вони не зазнавали переслідувань з боку влади, їх рятували, по-перше, належність до вищої знаті і те, що вони відкрито не афішували свої погляди, по-друге. Коли Мольєр у п'єсі «Дон Жуан» показав цинізм і дводумство лібертенів, він зазнав цькування з боку королівського двору.

У XVII ст. спостерігається підйом впливу буржуазії, передусім дворянства мантії, чиновників парламентів, прокурорів та інтендантів, які контролювали збирання податків у провінції. Для французького буржуа епохи «Старого порядку» головною життєвою цінністю було не накопичення грошей для розвитку власної справи, а можливість купити державну посаду, наприклад, посаду інтенданта. Продаж державних посад практикувалася здавна королівською владою. Чиновну буржуазію ненавиділи і аристократія, і народ. Але для свого самоствердження і дворянство мантії, і велика буржуазія, що примикала до нього, оголошували себе захисниками державних інтересів. Поглинаючи значну частину концентрованої державної ренти, чиновна буржуазія, як підкреслює Р. Мандру, витрачала значні кошти зміст діячів культури (10, з. 179-183). У XVIII ст. створюються провінційні академії, коштом освічених багатих чиновників видаються книжки філософів-просвітителів. Кількість книг світського змісту з роками зростає: з 1700 по 1750 вийшло 13 тис. книг, з 1750 по 1789 - 30 тис. (10, с. 198). На гроші численних передплатників і грошові внески, переважно багатих освічених буржуа, Дені Дідро міг утримувати понад тисячу співробітників видання знаменитої енциклопедії (10, з. 205), освічена частина аристократії і навіть двір перебували наприкінці XVIII в. під впливом літератури Просвітництва, не відчуваючи небезпеки, яку вона несла «Старому порядку».

Протягом XVII-XVIII ст. культура Франції змінювала вигляд. У першій половині XVII ст. панував стиль бароко, т. е. художній стиль кінця епохи Відродження. Цьому стилю було притаманне розмаїття декоративних деталей, прагнення різноманіття в живопису та літературі. Р. Мандру показує, що різноманіття бароко соціально відповідало політичному порядку на той час, впливу родовитого дворянства, особливо сильно що у період Фронди. У цей час артистичний світ залежав переважно від волі окремих меценатів (10, з. 229). У літературі стиль бароко відрізнявся суб'єктивним психологізмом, особливо у драматургії. У Франції це виявилося у п'єсах Ж. Ротру та з ще більшою силою в трагедіях П. Корнеля.

У другій половині XVII ст. характер культури Франції різко змінюється. Різноманітне бароко змінюється строгим класицизмом. Ця зміна виразно простежується історія. Можна навіть назвати дату народження класицизму - 1660, тобто початок дійсного правління Людовіка XIV. Відтепер увесь культурний розвиток країни опинився під контролем короля (10, с. 232). Головною архітектурною пам'яткою класицизму по праву вважається Версаль. Причому це не лише палац, а й комплекс палацових будівель, садів та фонтанів. У створенні брала участь плеяда архітекторів: Мансар, Ле Брен, Ле Ноер та інших., але вони перебували під жорстким контролем короля. Для класицизму характерний синтез мистецтв. Синтезу архітектури, скульптури, художнього садівництва під час будівництва Версаля відповідав синтез драматургії, музики та балету у сценічному мистецтві. Сувора смакова єдність класицизму була стимулом до створення чудових архітектурних пам'яток. Епоха Людовіка XIV відзначена розквітом як живопису, і літератури. Але за царювання великого монарха доля великих драматургів Мольєра і Расіна була трагічна. Придворний архітектор та садівник – подібні словосполучення звучать нормально, але поняття «придворний драматург» звучить принизливо. Ні Мольєр, ні Расін були придворними, зазначає Р. Мандру. Їхня творчість творців-одинаків задихалася в суворих рамках диктату короля. Якщо «Міщанин у дворянстві», «Пурсіньяк» і «Жорж Данден» викликали захоплення монарха, то такі геніальні твори як «Тартюф», «Дон Жуан» і «Мізантроп» не відповідали політичним поглядам короля, і їхня доля була сумною за життя автора.

Другий великий творець трагедій – Расін також постраждав від деспотизму короля. Драматургія Расіна, на думку відомого французького дослідника Люсьєна Гольдмана, відображала погляди наймогутнішого шару буржуазії, парламентських чиновників, докторів Сорбонни, які поділяли погляди янсеністів – противників єзуїтів, близьких до королівського двору. На думку Мандру, соціалізація та політизація творчості Расіна не цілком обґрунтована (10, с. 241). Звичайно Расін, який співчував янсеністам, відображав у своїх п'єсах трагізм тиранії, але це лише один із багатьох нюансів його творчості. Головне ж у тому, що Расін створював свої твори, суворо дотримуючись принципів класицизму. Ця нормативна система ґрунтувалася на методах раціоналістичної філософії. Класицизм наказував чітку логіку розвитку дії, ясність думки. Драматурги-класицисти створювали типові, строго окреслені характери у межах тогочасної психології. Останнє не виключало прагнення більш глибокого проникнення автора у внутрішній світ героя.

У творчості Расіна, вважав Р. Мандру, знайшло вираз усе те позитивне, що приніс мистецтву класицизм. Думка Р. Мандру підтверджує наступний висновок М. А. Жирмунської: «Мова Расіна безсумнівно несе у собі печатку умовності, характерної поетики класицизму. Він оперує ретельно відібраною лексикою, обмеженою переважно абстрактними та загальними поняттями, уникає конкретних слів та розмовних оборотів, недоречних у «високому» жанрі трагедії, але також і химерної орнаментальності та риторичних прикрас. Разом з тим, як у питаннях композиційної структури, так і в мові правила класичної поетики ніде у Расіна не відчуваються як насильство, нав'язане поетові ззовні, вони не сковують і не підкоряють його собі — навпаки, Расін з дивовижною простотою і невимушеністю підпорядковує ці умовності своїм головним художнім завданням. психологічного аналізудушевного стану своїх героїв» (3, с. 406). Велика краса мови Расіна і в той же час гнучкість і виразність його мови недоступні повною мірою найдосконалішого перекладу. Як і будь-який автор, великий драматургвисловлював власні погляди, але строга манера його творчості, поетичний геній та розкриття глибинних почуттів персонажів не давали його сучасникам бачити суб'єктивні натяки автора. Лише коли двір старіючого короля охопила ханжеська підозрілість, зникли умови для плідної творчості Расіна.

Для культури класицизму мови у Франції характерні стрімкий розвиток і щонайменше швидкий занепад, хоча класичні традиції продовжували існувати століття. Після смерті Людовіка XIV у 1715 р. диктат версальського етикету значно ослаб, у XVIII ст. центром розвитку культури знову став Париж. Р. Мандру зазначає, що прихід кожного монархічного володаря впливав зміну стилю життя (особливо вищого суспільства) і характер культури: епоха регентства, царювання Людовіка XV і Людовіка XVI (10, з. 314). Але водночас у країні йшли непомітні глибинні процеси.

Вивчення архівів багатьох навчальних закладів періоду «Старого ладу» дозволило зрозуміти, як виник і розвивався у Франції такий культурно-історичний феномен як Просвітництво. Після перемоги католиків над протестантами наприкінці XVI ст. країни почалося релігійне піднесення, католицька церква всіма силами прагнула підняти свій престиж. Контрреформація полягала й у прагненні підвищити культуру релігійного життя, замінити сліпе поклоніння релігійним реліквіям усвідомленішою твердою вірою. Тут головну роль грали єзуїти. Королівська влада сприяла їхньому ордену, починаючи з царювання колишнього вождя протестантів Генріха IV. Незабаром у багатьох населених пунктах Франції відкрилися єзуїтські колежі та ліцеї.

Єзуїти дуже серйозно ставилися до методики освіти. Якщо в колишніх церковних школах для народу панували зубріння і тілесні покарання, то єзуїти дбали про «виховання душі учня». Вчитель-єзуїт ставив своїм завданням м'яко та непомітно впливати на свідомість свого вихованця. У єзуїтських колежах майстерно створювалася обстановка відносної свободи, заохочувався інтерес до певної форми занять, майже кожному навчальному закладі була театральна трупа з учнів, проте заходи відбувалися під гранично непомітним, але невсипущим контролем єзуїтів. Випускник колежу зазвичай отримував гарну освіту та звичку до праці, але лише невелика кількість учнів ставали членами ордену. Єзуїти ставили за мету створити вельми широкий шар населення, який мав стати твердою опорою церкви (10, с. 299).

Р. Мандру наводить дані про соціальний склад учнів єзуїтських колежів, що базуються на архівних матеріалах. Так було в колежі міста Шалон на Марні XVII в. лише 3% вихованців належали до знаті, менше десяти – до великої буржуазії, близько тридцяти – до дрібних чиновників, понад тридцять – до торговців, більше десяти – до селян і більше двадцяти – до ремісників (10, с. 300). Таким чином, цифри показують, що більшість учнів єзуїтського колежу належали до середніх та нижчих верств суспільства. Шалон на Марні може вважатися типовим середнім містом Франції. Якщо ми порівняємо соціальний склад учнів із соціальним складом такого великого містаЯк Бордо, картина буде іншою: число селян складе менше одного відсотка, ремісників не більше чотирьох відсотків, натомість синів чиновників буде більше 50% (10, с. 300). Тут панують чиновники, частково велика буржуазія та торговці. А ось у маленькому містечку Бійом зовсім інший соціальний склад: частка дітей селян перевищувала двадцять відсотків, ремісників – десять. Слід зазначити, що переважно до єзуїтських колежів надходили діти заможних селян, бо за освіту в єзуїтських колежах, як правило, треба було платити. Порівняльний аналіз соціального складу вихованців колежу в Шалоні на Марні XVII-XVIII ст. доводить, що протягом багатьох років картина не змінювалася, представники аристократії становили ледве помітну меншість, вихідці з-поміж великої буржуазії також не становили в середньому більше десяти відсотків. У XVIII ст. серед учнів колежу налічувалося близько шістдесяти відсотків дітей чиновників та торговців і тридцять відсотків дітей селян та ремісників (10, с. 301).

Отже, середні та навіть нижчі верстви становили масу вихованців єзуїтів. З них дуже мало хто вступав в орден. Цього завдання не ставили й керівники ордена єзуїтів. Їхня мета полягала в тому, щоб поповнити суспільство вірними католиками. Але завдання це виявилося невиконаним. Вихованці католицьких колежів стали головними ворогами католицизму. Вольтер і Дідро – вихованці єзуїтів, теоретики утопічного комунізму Мельє, Маблі та Дешан також здобули релігійну освіту. Все це було невипадково. Через об'єктивні обставини випускники єзуїтських колежів та інших духовних закладів виявилися не затребуваними суспільством. Вони важко знаходили собі місце в житті. Бо багато хто не хотів повертатися до занять своїх батьків. Зіткнувшись із суворою соціальною несправедливістю, вони швидко починали поклонятися тому, що проклинали їх колишні вчителі, тобто ідеям освіти. Вольтер, Монтеск'є, Руссо і Дідро знайшли в їхньому середовищі найпалкіших прихильників. Таким складним шляхом протягом двох століть у країні формувалася велика опозиційна інтелігенція, яка відіграла певну роль у Французька революція.

Мішель де Серто, відомий французький історик і культуролог, на відміну Робера Мандру, був учнем Л. Лютого, але продовжував традиції «Анналов» у сфері історії культури. Будучи членом ордена єзуїтів, М. де Серто видав листи одного з найбільших єзуїтських містиків – Ж.-Ж. Сюрена. Читаючи це листування, можна переконатися у гігантської ерудиції М. де Серто як історика церкви, а й визнати його глибоким знавцем сучасної історіографії та культурології. М. де Серто належить до тих релігійним мислителям, які прагнуть гранично об'єктивно аналізувати факти, і навіть погляди інших істориків культури. Вчений вважає, що сучасне розуміння релігійного життя минулого не може бути дійсним без вивчення культури та менталітету певної доби (12).

Мішель де Серто зазначає, що характер духовного життя у Франції XVII ст. відрізнявся від характеру духовного життя XVI ст. Епоха релігійних воєн розділила всю країну на два табори - католиків та протестантів, непримиренних ворогів. Загалом XVII ст. — епоха релігійного плюралізму. До 1685 р. протестанти жили у духовній ізоляції. У католицькому таборі між янсеністами, єзуїтами, домініканцями йшла невидима світу запекла боротьба, що викликало певну напругу в суспільстві. Характерний новий вид релігійної боротьби: противники звинувачували одне одного над єресі, а аморалізмі. Сталося, як пише Мішель де Серто, структурна зміна цілого ряду цінностей. У середні віки, включаючи XVI ст., мораль і релігія були нероздільні, всякий відступ від панівної моралі називалося єрессю. Так, наприклад, державний зрадник вважався єретиком. Але у XVII ст. почалися зміни у поглядах, що закріплювалися у стереотипах масової свідомості. Через сто років Руссо писав Вольтеру: "Догма зараз нічого не означає, а мораль означає все" (цит. по: 12, с. 153).

Етика почала відігравати роль теології, і це наклало відбиток на всю культуру «Старого порядку». Наступні явища сприяли такій мутації масової свідомості: 1) підпорядкування церкви державному інтересу; 2) політизація поведінки священиків та сувора регламентація церковної практики; 3) розрив між боргом підданого та містицизмом; 4) закріплення у суспільній свідомості понять «лояльність» та «користа»; 5) бюрократизація церковного культу (12, с. 156).

Вже у XVI ст. відбувається відокремлення теології від культури, і у зв'язку з поділом церков з'являються дві «офіційні теології»: католицька та протестантська. Але, як зазначає Мішель де Серто, контрреформаційна теологія відрізнялася від середньовічної, вона була менш догматичною та плюралістичною. «Листи до провінціалу» Б. Паскаля це добре доводять (4). Ослаблення церковної догматики змінило як культуру, а й спосіб життя. У народі різко посилилися забобони: популярність чаклунства та полювання за відьмами. В аристократичному середовищі виник релігійний скептицизм - лібертинаж. Упродовж XVII ст. йшов процес, який можна позначити як "розчленування релігійного світогляду" (12, с. 160). Наприкінці століття один із перших просвітителів Бернар Ле Бов'є де Фонтенель (1657-1757) вже говорив про вивчення «системи християнських релігій» (12, с. 160). Лібертенізм чи атеїзм існував у XVII ст. напівпідпільно. Лібертени були людьми, що належали до знатних прізвищ, до них примикали також представники інтелігенції, що народжується, особливо відомі лікарі, які мали великий вплив. Від них вимагалося одне — не говорити про свої погляди публічно та формально іноді виконувати церковні обряди. У селах, особливо у першій половині XVII в., панував терор: тисячі жінок (чоловіки страждали меншою мірою, але це були жертви «самодіяльної інквізиції») спалювалися на багаттях.

У другій половині століття кількість розправ зменшилася: вища судова влада в цей час не тільки не підтримувала стихійні переслідування відьом, але нерідко виступала проти звинувачень у чаклунстві.

У XVII ст. у Франції існувало багато містичних шкіл, але містикам переважно належали представники соціальних верхів. Королівська влада ставилася вороже до містицизму, як і до стихійних забобонів, і до атеїзму, вона вимагала, перш за все, формальної одноманітності та порядку, але ні Рішельє, ні Мазаріні, ні Людовік XIV не застосовували методів іспанської інквізиції. Сумним винятком виглядає скасування Нантського едикту в 1685 р. Хоча французькі протестанти були дисциплінованими підданими короля, але саме вони стали жертвою королівської волі, яка, як показала згодом історія, не збігалася з державними інтересами країни. Так буває, коли державний інтерес фактично є інтересом однієї особистості.

Здавалося, вигнання гугенотів означало повну перемогу католицизму мови у Франції. Так, вигнання євреїв та маврів з Іспанії свідчило про безроздільну владу католицтва в цій країні. Якщо досліджувати характер розвитку культури обох країн XVII в., можна помітити значне різниця. Обидві країни великої культури, але в Іспанії в цю епоху не могли існувати ні Мольєр, ні Декарт, ні Паскаль, бо там на захисті догми стояла інквізиція. У Франції все вирішувала верховна світська влада. У 1681 р. духовник Людовіка XIV єзуїт Ла Шез писав генералу свого ордену, що королівські ордонанси мають у Франції бути непорушними законами всім єзуїтів, що у цій країні (12, з. 169). Якщо єзуїти, які раніше славилися своєю незалежністю, повністю підкорилися особисто королю, всі інші конгрегації і клір були під владою королівської адміністрації. Під її спостереженням відтепер проходила вся релігійне життя. Було складено інструкції з проведення церковних служб. Культурне виховання народу – такий головний принцип централізованого управління. Було наказано вселяти простим людямоснови сучасної теології та зміцнювати культ короля (12, с. 170). Політика і релігія злилися воєдино, земне і небесне ніби з'єдналися, але це явище призвело до непередбачуваних наслідків: справді релігійні люди усвідомлено чи несвідомо прагнули знайти якесь духовне притулок від церковного формалізму, а покоління молодих людей несвідомо ставали байдужими.

Існує тенденція стверджувати, що XVII ст. був століттям торжествуючого християнства. Мішель де Серто ставиться до цього погляду обережно. Він намагається простежити процеси у культурному та релігійному житті Франції, які сприяли тому, що у XVII ст. Франція показала небачені приклади ненависті до християнської релігії як у сфері урядової політики, так і у сфері масової свідомості. Характерно, що в інших католицьких країнах – Італії та Іспанії – ми не бачимо подібних прикладів. Не було таких прикладів і в протестантських країнах після реформації. Ніде в Європі ми не знайдемо таких впливових ворогів церкви як Вольтер, Дідро та Гольбах.

Як відомо, культурно-релігійна політика французького абсолютизму зустріла опір у янсеністів – прихильників богослова Янсенія, який у книзі «Августин» захищав традиційні цінності від «модерністських новацій». М. де Серто не розглядає догматику теологічної суперечки. Він по-новому намагається вдивитись у факти, знайомі читацькій аудиторії. Головною пам'яткою боротьби єзуїтів з янсеністами є великий трактат Блеза Паскаля «Листи до провінціалу», де викривається лицемірство єзуїтів (4). Не заперечуючи Паскалю, М. де Серто прагне розглянути цю боротьбу крізь призму трьох наступних століть.

М. де Серто вважає, що в численних єзуїтських трактатах термін «стан душі», що вживався в традиційній богословській та містичній літературі, а також різні ступені цього стану, «порядок насичення душі благодаттю... зазнали нового дослідження» (12, с. 176-177). У доєзуїтській схоластиці тема молитовного стану та тема душевного самовдосконалення як співіснуючих не розглядалася. Єзуїти, які з самого початку мали на меті поєднати релігійний стан із соціальною практикою, розробляли проекти нової релігійної поведінки в нових умовах суспільної та політичного життя. Тому «гнучка мораль» ордена зливалася, на думку М. де Серто, із соціальною політикою абсолютистського королівства. Це був один із перших досвідів поставити психологію на службу соціальної та культурної політики держави. Не випадково Шарль Перро, автор « Чарівних казок»,« Був фактично міністром культури Людовіка XIV та одним із творців культу «Короля-сонця». Ш. Перро був також автором поеми «Століття Людовіка Великого» (5, с. 41-58).

Проти уніфікації релігійного життя і гнучкості моралі у Франції виступали як янсеністи, а й інші представники містичних шкіл, дуже поширених країни. Містики, незгодні з «іспанською мораллю», були навіть серед ордена єзуїтів. «Іспанською мораллю» гнучку єзуїтську мораль можна назвати не тільки тому, що її головними проповідниками були іспанці - Моліна, Санчес, Суарес, Ескобар та ін., але тому, що як офіційна мораль вона перемогла в Іспанії в XVII ст., коли крайня релігійна нетерпимість уживалася з церковним примиренням і церковним примиренням. Пуританська мораль янсеністів та інших містичних шкіл часто поєднувалася з політичним радикалізмом та з вимогою релігійної та духовної свободи. У Франції наприкінці XVII та на початку XVIII ст. йшла приглушена боротьба у сфері релігійного та культурного життя.

Культурне та пов'язане з нею релігійне життя у Франції було суперечливим. Повсякденна практика дає приклади співіснування протилежних видів соціальної поведінки. «Коли Паскаль аналізує стан віри, істина про яку він говорить не ідентична жодній реальній поведінці і ніякому доктринальному тлумаченню» (12, с. 183). Б. Паскаль у «Листах до провінціалу», з погляду розвитку етики, «був сучасніший і проникливіший, ніж його противники казуїсти» (12, з. 183). Але з погляду реального життя свого часу він залишався близьким до образу самотнього пророка, незважаючи на успіх його книги. Синтез державної політики та «гнучкої» релігії став нормою життя, що нав'язується всесильною королівською владою. Ця норма привела до останні десятиліття XVII ст. до певного занепаду культурного життя мови у Франції.

У XVIII ст. становище змінилося. Гнучка релігійна мораль єзуїтів, проти якої виступав Б. Паскаль, могла зберігати релігійний вплив та заганяти в підпіллі лібертенізм знати лише за допомогою інквізиції. Але за її відсутності, як свідчить приклад Франції, атеїзм і вільнодумство стали впливати на культурне життя як аристократії, а й у дедалі більше численну міську інтелігенцію. Типовим абсолютним монархом XVIII ст. був Фрідріх II, переконаний атеїст, хоча номінально – глава лютеранської церкви Пруссії. Тепер не Бог, а обожнюваний людський розум став вершником історії, «аристократи, комерсанти, банкіри, функціонери - всі були віддані амбітному і обачливому розуму» (12, с. 186). Такою була парадигма менталітету верхів. Але це ще більше збільшувало розрив між елітарною та народною культурами у XVIII ст. Ідея християнського братства відійшла другого план. Нині як аристократи, а й середні буржуа вважали себе цивілізованими людьми, а селян, які становили переважна більшість населення Франції, уявляли дикунами. Мова французького Просвітництва збагатилася багатьма словами, невідомими простому народу, саме в цей час у країні дистанція між мовою народу та мовою міських салонів сильно збільшується.

У добу Просвітництва приходить усвідомлення вивчення народної мови як особливого явища. У XVIII ст. критичний аналіз релігії з погляду світської науки набуває статусу етичного завдання. Багато вчених того часу не відчували ворожнечі до релігії, але вона втрачала свою потаємну сутність, перетворюючись на об'єкт дослідження. Монтеск'є писав: «Всі релігії ґрунтуються на принципах, корисних суспільству» (цит. за: 12, с. 188). Але сама подібна постановка питання має на увазі можливість думки про шкідливість релігії, яка стала поширеною у філософії просвітителів. Одним із центральних понять ідеології Просвітництва стало поняття «суспільна користь». Загальна користь визначається розумом. Стало аксіомою становище, що носіями розуму є філософи-просвітителі. Так утворився новий світський клір.

Вчення про «суспільну користь» підмінило євангельське слово «ближній» безособовим терміном «інші», позбавило душі слово «народ», перетворивши маси на поле для експериментів носіїв розуму. Завдяки Руссо у свідомості інтелігенції XVIII ст. утвердився міф про всесилля освіти, про можливість вкладання «високих істин» у масову свідомість «дикого народу». М. де Серто стверджує, що напередодні та під час Французької революції елітарна культура найактивніше впливала на народну культуру. "Проекція абстрактних істин на масову свідомість призводила до абсолютно непередбачуваних результатів" (12, с. 190).

У XVIII ст. у масову психологію, насамперед мови у Франції, впровадилися, як зазначає М. де Серто, три соціокультурних терміна: «політика», «свідомість», «прогрес» (12, з. 191). Королівська політика ще за царювання Людовіка XIV стала ототожнюватися з Божою волею, а в добу Освіченого абсолютизму - з державною політикою. В утопічних трактатах Мореллі та Дідро, де проектувалося майбутнє комуністичне суспільство, державна політика означала тотальний контроль над людьми (12, с. 192). У ХІХ ст. термін «державна політика» став поєднуватись у мріях про державу повної соціальної справедливості з такими стереотипними словосполученнями як «опора на закони науки» та «колективна творчість мас».

Французьке слово "conscience" означає і "совість", і "свідомість". Справді, у середні віки поняття «християнська свідомість» було гранично близько до поняття «совість». В епоху реформації в протестантських релігіях, у мирському аскетизмі пуритан поняття «совість» поступилося розумному служінню Богу. Логічним завершенням подібної раціональної лінії в теології стало вчення Канта про категоричний імператив. Руссо, хоча був уродженцем кальвіністської Женеви, на свої релігійні погляди стояв ближче до католиків, ніж до протестантів; він називав совість "божеським інстинктом", але фактично вважав її природним інстинктом. Він заперечував верховенство розуму над совістю, з примату практики, а чи не віри. «Я думаю, що головне у релігії – це справа. Потрібно бути доброю, милосердною, співчутливою, гуманною людиною. Кожен, хто воістину такий, той гідний бути врятованим», писав Руссо (цит. за: 12, с. 194).

З цього висловлювання Руссо видно, що «справа» для Руссо є не щось, спрямоване всередину себе, як у протестантів, а праця насамперед в ім'я досконалості зовнішнього світу. М. де Серто підкреслює, що Руссо, подібно до язичницьких філософів, не вважав чесноту атрибутом Бога. Совість у російської громадянської релігії швидше за все збігається з прагненням до загального блага. У вульгаризованій якобінцями теорії женевського мрійника слово «conscience» фактично збіглося з терміном «революційна свідомість».

Третьою важливою метаморфозою світської етики, яка вплинула на культурне життя Франції та всієї Європи, було укорінення у суспільній свідомості терміна «прогрес». В останній третині XVIII ст. цей термін був дуже популярним. Замість таємниці одкровення тепер у суспільній свідомості починає утверджуватись ідея безперервного вдосконалення науки та культури. Прогрес означав розумний порядок, що протистоїть забобонам старовини. Суперечка про абсолютну перевагу нової культури над старою велася ще в епоху Людовіка XIV, коли Перро і Фонтенель доводили перевагу сучасної культуринад античною, а Буало і Расін відстоювали неперевершеність краси пам'яток Греції та Риму. Але наприкінці XVIII ст. йшлося не стільки про мистецтво, скільки про розвиток усіх сторін життя.

Теза про еліту, яка цивілізує народ, стала аксіомою для переважної більшості інтелігенції. Але, як зазначає М. де Серто, в ідеї культуртрегерства того часу збереглося багато від середньовіччя: месіанізм і ентузіазм, властивий хрестоносцям. Однак людська природане так легко підкоряється інтелектуальним проектам. Просвітителі швидко зіткнулися із потоком неконтрольованих подій в епоху Революції. "Формальна дехристиянізація ще більше посилила "релігійні" настрої, але вони відтепер були відчужені від Логосу, який надавав істинність релігії" (12, с. 195). Тому революційний фанатизм може лише тимчасовий характер, вважає М. де Серто.

Мішеля де Серто цікавить проблема еволюції релігійної та народної культури у провінції. Хоча відомо, що у XVIII ст. сільський клір в основному формально ставився до своїх обов'язків, сільське населення дуже активно споживало «літературу книгонош»: житія святих, книги, що описують перебування душ у Чистилищі, що розповідають про Страшному судіі т. д. Думки про смерть, про добро і зло, як і раніше, хвилювали серця мільйонів селян, але нові стереотипи, породжені епохою Просвітництва, непомітно деформували традиційні уявлення. "Вони не змінювали символи колективної свідомості" (12, с. 198). Зіткнення з новою інформацієюпризводило до ідеологізації старих образів та до підпорядкування новим стереотипам. Це був переважно несвідомий процес. М. де Серто зазначає, що наприкінці XVIII ст. у народній свідомості відбулася своєрідна зміна. «Фундаментальне питання історії менталітету й у соціології культури у тому, щоб з'ясувати як у XVIII в. здійснювався процес ще більшого відчуження між двома культурами: однією елітарною, вченою, буржуазною та іншою народною, середньовічною, карнавальною» (12, с. 199). Характерно, що це відчуження не виключало впливу елітарної культурина народну, бо взаємозв'язок між різними культурамиіснувала завжди.

Середньовічний суспільство було ієрархічно. Феодальна ієрархія була освячена церквою та закріплена у традиції. Кожен член цього суспільства відчував свідомо чи несвідомо якесь єдність коїться з іншими, навіть якщо він був найнижчою щаблі ієрархічних сходів. Еліта епохи Просвітництва свідомо чи несвідомо розглядала себе як касту мудреців, що має мало спільного з диким народом. Вона сама поставила себе у становище іншого соціального етносу. Слід зазначити, що у XVII в. мова аристократії відрізнялася від мови простолюду, але це була мова салонів і двору, яка за малим винятком не була мовою повсякденного життя. Аристократів XVII ст. можна порівняти із середньовічними лицарями, які однаково володіли і куртуазною, і простонародною мовою. Але французька літературна та епістолярна мова XVIII ст. - гордість французької та світової культури - був повністю відірваний від повсякденної життєвої практики простого народу. Мова книги та листи в епоху Просвітництва сильно впливала не лише на мову інтелігента того часу, а й на вимову. Аристократична вимова гранично різко відрізнялася від простонародного, особливо у провінції. Суворим фонетичним правилам приділялася значна у вихованні. Охоронцями норм вимови були Академія та класичний театр.

Кюре, який розмовляв із селянами простою мовою і співав молитви латиною, був для них не чужою людиною, через що латинські молитви здавалися їм хоч і таємничими, і сакральними, але близькими. "Релігія, яка більшістю філософів Просвітництва трактувалася як збори вульгарних забобонів, була для менталітету інтелігенції антиподом розуму" (12, с. 203). Тому мова французького інтелігента була далека, як за змістом, і за словниковим запасом і вимовою, масі людей, а незрозуміле, як відомо, дратує. Якби французьке духовенство також не зазнало «опромінення» філософією Просвітництва, то, можливо, ми не стали б свідками тієї ворожнечі до духовенства, яку зазнало населення Франції під час революції. Вплив ідеології Просвітництва на французький клір - проблема, поки що слабо розроблена в науці.

Наприкінці XVII ст. королівська влада розпочала активну кампанію з бюрократизації церкви. Священик мав бути провідником культу короля. Його проповідь не мала носити характер натхненної імпровізації, а читалася відповідно до інструкції, затвердженої єпископом. Живе словопочало зникати з проповіді. Бюрократичний трафарет породжував байдужість і в пастирів, і в пастви. У XVIII ст. бюрократична політика тривала за інерцією. Нові покоління кюре розучилися знаходити спільну мовузі своїми парафіянами. Формально виконуючи свої обов'язки вони жили інтересами місцевої еліти. Не настільки небезпечний полум'яний богоборець священик Ж. -Ж. Мельє, як байдужий до релігії і прагне мислити модно завсідник світських салонів єпископ або абат, чий приклад впливав на світогляд сільських священиків. Більшість грамотних людей дедалі більше дистанціювалася від народної культури. "Починаючи з 1750 р., розрив став збільшуватися швидше" (12, с. 207). Паралельно з таким розривом культур у сільській місцевості посилилася влада дрібних чиновників-сержантів, котрі спостерігали за порядком під час церковних служб. У минулі часи священик викривав на проповіді грішників, наводячи приклади життя свого приходу. Тепер він мав читати затверджений на єпископальній конференції текст, який мало хто слухав.

Чим меншим був авторитет кюре, тим більше зростав вплив сільського шинкаря, бо саме в шинку селяни могли обговорити політичні звістки та місцеві новини. У трактирі, над ринком, на ярмарку формувалися нові настрої мільйонів (12, з. 203). Не можна сказати, що влада не помічала зростаючої байдужості селян. Ще в 1705 р. начальник французької поліції Дельмар опублікував спеціальне зведення правил нагляду над населенням. Ці правила дрібно регламентували порядок церковних ритуалів; під приводом боротьби проти дикості заборонялися старовинні карнавальні традиції. Але подібна політика, що проводиться протягом XVIII ст., призвела ще до більшого розриву між елітарною та народною культурами.

На закінчення слід зазначити, що у роботах Мішеля де Серто немає історичних відкриттів, та його культурологічний аналіз знайомого фахівцям матеріалу дуже повчальний. Він підводить нас до теми «революція і відчуження культур», пріоритет у створенні якої належить М. М. Бахтіну. Революція показала, яку ціну заплатила освічена еліта за відрив народної культури, за нерозуміння тих процесів, які у масовій свідомості. У густонаселених, економічно розвинених регіонах Франції селяни, зазвичай, приєднувалися до карнавальним ходам революційних городян, які співали карманьолу, а таких заповідниках середньовіччя, як Вандея і Бретань, сільське населення піднялося на захист церкви та старих традицій. А вплив католицької церкви в Іспанії пояснюється тим, що ще з часів інквізиції церква не боролася з народною карнавальною культурою, а прагнула використовувати її у своїх інтересах.

Якщо Робер Мандру у дослідженнях простежив особливості соціально-культурного розвитку Франції шляху до революції, то Мішель де Серто прагнув показати, які були наслідки взаємного відчуження культур за доби Просвітництва. Вивчення подібних процесів корисне для розуміння історії та культури інших країн.

Список літератури

Гуревич А. Я. Жак Ле Гофф та «нова історична наука» // Ле Гофф Ж. Цивілізація середньовічного Заходу. – М., 1992. – С. 352-373

Гуревич А. Я. Уроки Люсьєна Лютого // Февр Л. Бої за історію. – М., 1991. – С. 501-541; Гуревич А. Я. Історичний синтез та Школа «Анналів». – М., 1993. – 328 с.

Жирмунська H. A. Трагедії Расіна // Расін Ж. Трагедії. - Новосибірськ, 1997. -С. 377-408.

Паскаль Б. Листи до провінціалу // Августин Аврелій, Блез Паскаль. Лабіринти душі. – Сімферополь, 1998. – С. 219-412.

Суперечка про стародавні та нові. - M., 1985. -471с.

Лютий Л. Бої за історію. -М., 1991. -630 с.

Хейзінга І. Осінь середньовіччя. – М., 1988. – 540 с.

Шатобріан Ф. -Р. де. Геній християнства // Естетика раннього французького романтизму. – М., 1982. – С. 94-220.

Mandrou R. De la culture populare aux XVIIe та XVIIIe siecles. - P., 1964. - 222 p.

Mandrou R. La France au XVII та XVIII s. – P., 1974. – 360 p.

Mandrou R. Magistrats et sorciers au XVII в. – P., 1968. – 586 p.

Certeau M. de. L"ecriture de l"histoire. – P., 1975. – 320 p.

Surin J.-J. Correspondance. – P., I960. - 1728р.

Текст цитується з видання: Каплан А. Б. Французька школа «Анналів» про історію культури // Ідеї в культурології XX століття. Збірник оглядів. – М., 2000. СС. 51 – 73.

Ласкаво просимо на другий урок із серії, присвяченої ОВП. У першій статті ви ознайомилися з основами ООП у PHP, включаючи поняття класів, методів, полів та об'єктів. Також ви дізналися, як створити простенький клас та реалізувати його.

У цій статті ви дізнаєтеся ще більше про методи та поля класу. Це дасть вам хорошу основу для того, щоб приступити до вивчення більш професійних технік, таких як успадкування.

Ось список того, про що я розповім вам у цій статті:

  • Конструктори та деструктори, які дозволяють призначити певні дії об'єкту при його створенні та видаленні;
  • Статичні поля та методи – це такі поля та методи, які не пов'язані з конкретними об'єктами класу;
  • Константи класу, зручні зберігання фіксованих значень, які стосуються певного класу;
  • Явна вказівка ​​типу, що використовується для визначення обмеження типів параметрів, які можна передавати в той чи інший метод;
  • Спеціальні методи __get() та __set(), які використовуються для завдання та читання значень полів класів;
  • Спеціальний метод __call(), який використовується для виклику методу класу.

Ви готові? Тоді вперед!

Конструктори та деструктори

Іноді виникає необхідність виконувати якісь дії одночасно із створенням об'єкта. Наприклад, вам може знадобитися задати значення поля об'єкта відразу після його створення, або ж ініціалізувати їх значеннями з бази даних.

Подібно до цього, вам також може знадобитися виконувати певні дії щодо видалення об'єкта з пам'яті, наприклад, видалення об'єктів, що залежать від видаленого, закриття з'єднання з базою даних або файлів.

Як видалити об'єкт? PHP автоматично видаляє об'єкт із пам'яті, коли не залишається жодної змінної, що вказує на нього. Наприклад, якщо ви створите новий об'єкт і збережете його в змінній $myObject, а потім видаліть її за допомогою методу unset($myObject), об'єкт також видаляється. Також, якщо ви створили локальну змінну в будь-якій функції, вона (разом з об'єктом) буде видалена, коли функція завершить роботу.

У PHP є два спеціальні методи, які можна застосовувати для здійснення певних дій щодо створення та видалення об'єктів:

  • Конструктор викликається одразу після того, як ви створили об'єкт;
  • Деструктор викликається перед тим, як об'єкт видаляється з пам'яті.

Робота з конструкторами

Застосовуйте конструктори, щоб вказати дії, які будуть виконуватися для створення об'єкта класу. Ці дії можуть містити ініціалізацію полів класу, відкриття файлів, читання даних.

Щоб створити конструктор, додайте до вашого класу спеціальний метод __construct() (перед словом construct - два символи підкреслення). PHP автоматично викликає цей метод при реалізації вашого класу, тобто при створенні об'єкта цього класу.

Ось приклад конструктора:

Class MyClass ( public function __construct() ( echo "I"ve just been created!"; ) ) $myObject = new MyClass(); // відобразить "I"ve just been created!"

У класі MyClass є конструктор, який виводить на сторінку рядок "I"ve just been created!". Останній рядок коду створює новий об'єкт класу MyClass. Коли це відбувається, PHP автоматично викликає конструктор, і повідомлення відображається в браузері. Тепер на практиці - ініціалізація полів класу:

Class Member ( private $username; private $location; private $homepage; public function __construct( $username, $location, $homepage) ( $this->username = $username; $this->location = $location; $this->homepage = $homepage; ) public function showProfile() ( ech

"; echo"
Username:
$this->username
"; echo"
Location:
$this->location
"; echo"
Homepage:
$this->homepage
"; echo"
"; ) ) $aMember = new Member("fred", "Chicago", "http://example.com/"); $aMember->showProfile();

Даний скрипт відобразить на сторінці наступне:

Username: fred Місцезнаходження: Chicago Homepage: http://example.com/

У нашому класі Member є три поля та конструктор, який приймає як параметри 3 значення - по одному для кожного поля. Конструктор призначить полям об'єкта значення, отримані як аргументи. У класі також є спосіб відображення на сторінці значень полів об'єкта.

Потім у коді створюється об'єкт класу Member, який ми передаємо 3 значення "fred", "Chicago", і "http://example.com/", оскільки конструктор приймає саме 3 параметри. Конструктор записує ці значення поля створеного об'єкта. Насамкінець, викликається метод showProfile() для створеного об'єкта, щоб відобразити отримані значення.

Робота з деструкторами

Застосовуйте деструктор, коли об'єкт видаляється з пам'яті. Вам може знадобитися зберегти об'єкт у базі даних, закрити відкриті файли, які взаємодіяли з об'єктом. Щоб створити деструктор, додайте до класу метод __destruct(). Він викликається якраз перед видаленням об'єкта автоматично. Ось простий приклад:

Class MyClass ( public function __destruct() ( echo "I"m about to disappear - bye bye!"; // (очистити пам'ять) ) ) $myObject = new MyClass(); unset($myObject); // відобразить "I"m about to disappear - bye bye!"

Ми створили простенький деструктор, який відображає повідомлення на сторінці. Потім ми створили об'єкт нашого класу і відразу видалили його, викликавши метод unset() для змінної, яка посилається на об'єкт. Перед видаленням об'єкта зголосився деструктор, який відобразив у браузері повідомлення "I"m about to disappear - bye bye!".

На замітку: на відміну від конструкторів, деструктори не можна передавати ніякі параметри.

Деструктор також викликається при виході зі скрипту, тому що всі об'єкти та змінні при виході з методу видаляються. Так, наступний код також викличе деструктор:

Class MyClass ( public function __destruct() ( echo "I"m about to disappear - bye bye!"; // (очистити пам'ять) ) ) $myObject = new MyClass(); exit; // відобразить "I"m about to disappear - bye bye!"

Також, якщо робота скрипта припиниться через помилку, деструктор теж викличеться.

Примітка: при створенні об'єктів класу-спадкоємця, конструктори класу-батька не викликаються автоматично. Викликається лише конструктор спадкоємця. Тим не менш, ви можете викликати конструктор батька з класу-спадкоємця таким чином:

parent::__construct(). Те саме стосується деструкторів. Викликати деструктор з батьків можна так: parent:__destruct(). Я розповім вам про класи-батьків і спадкоємців у наступному уроці, присвяченому спадкоємству.

Статичні поля класу

Ми розглянули статичні змінні статті PHP Variable Scope: All You Need to Know. Як стандартна локальна змінна, статична змінна доступна лише межах функції. Тим не менш, на відміну від звичайних локальних, статичні змінні зберігають значення між викликами функції.

Статичні поля класу працюють за таким же принципом. Статичне поле класу пов'язане зі своїм класом, проте воно зберігає значення протягом всієї роботи скрипта. Порівняйте це зі звичайними полями: вони пов'язані з певним об'єктом, і вони губляться при видаленні цього об'єкта.

Статичні поля корисні у випадках, коли вам потрібно зберігати певне значення, що стосується всього класу, а не окремого об'єкта. Вони схожі на глобальні змінні класи.

Щоб створити статичну змінну, додайте ключове слово static до її завдання:

Class MyClass (public static $myProperty;)

Ось приклад того, як працюють статичні змінні:

Class Member ( private $username; public static $numMembers = 0; public function __construct($username) ( $this->username = $username; self::$numMembers++; ) ) echo Member::$numMembers . "
// відобразить "0" $aMember = new Member("fred"); echo Member::$numMembers .
// відобразить "1" $anotherMember = новий Member("mary"); echo Member::$numMembers .
// відобразить "2"

Є кілька цікавих речей, тож давайте розберемо цей скрипт:

  • У класі Member два поля: приватне поле $username і статичне $numMembers, яке спочатку набуває значення 0;
  • Конструктор отримує як параметр аргумент $username і встановлює полю щойно створеного об'єкта значення цього параметра. У той же час він інкрементує значення поля $numMembers, тим самим даючи зрозуміти, що кількість об'єктів нашого класу збільшилася на 1.

Зауважте, що конструктор звертається до статичного поля так: self::$numMembers. Ключове слово self схоже на $this, яке ми розглянули у минулому уроці. Тоді як $ це посилається на поточний об'єкт, self - на поточний клас. Також тоді як для отримання доступу до полів та методів об'єкта ви використовуєте ->, то в цьому випадку використовуйте: для отримання доступу до полів та методів класу.

  • На завершення скрипт створює кілька об'єктів класу Member і відображає їх кількість на сторінці, тобто. значення статичної змінної $numMembers. Зауважте, що ця змінна зберігає своє значення протягом всієї роботи скрипта, незважаючи на об'єкти класу.

Отже, щоб отримати доступ до статичного поля класу, використовуйте оператор::. Тут ми не можемо скористатися ключовим словом self, тому що код знаходиться за межами класу, тому ми пишемо ім'я класу, потім:: а потім ім'я поля (Member::$numMembers). У межах конструктора також потрібно використовувати саме таку структуру, а не self.

На замітку: нашому скрипту нічого не варто було отримати доступ до поля класу $numMembers перед тим, як створився перший об'єкт цього класу. Немає необхідності створювати об'єкти класу для того, щоб скористатися його статичними полями.

Статичні методи

Поряд із статичними полями класу, ви також можете створювати статичні методи. Статичні методи, як і поля, пов'язані з класом, але немає необхідності створювати об'єкт класу, щоб викликати статичний метод. Це робить такі методи корисними у разі, якщо вам потрібний клас, який не оперує реальними об'єктами.

Щоб створити статичний метод, потрібно додати ключове слово static в його оголошенні:

Class MyClass ( public static function myMethod() ( // (дії) ) )

У попередньому прикладі, що стосується статичних полів, було статичне поле $numMembers. Робити поля приватними, а методи для доступу до них – відкритими – це хороша практика. Давайте зробимо наше статичне поле приватним та напишемо статичний метод public для отримання значення даного поля:

Class Member (private $username; private static $numMembers = 0; public function __construct($username) ( $this->username = $username; self::$numMembers++; ) public static function getNumMembers() ( ). "
// відобразить "0" $aMember = new Member("fred"); echo Member::getNumMembers() .
// відобразить "1" $anotherMember = new Member("mary"); echo Member::getNumMembers() .
// відобразить "2"

Ми створили статичний метод getNumMembers(), який повертає значення статичного поля $numMembers. Ми також зробили це поле приватним, щоб не можна було отримати його значення ззовні.

Ми також змінили код виклику, використовуючи метод getNumMembers() для отримання значення поля $numMembers. Зауважте, можна викликати даний метод без того, щоб створювати об'єкт класу, тому що метод – статичний.

Константи класу

Константи дозволяють встановити глобальне значення для всього вашого коду. Це значення фіксоване, воно може бути змінено. Константи класу схожі зі звичайними константами. Основна їхня відмінність полягає в тому, що крім того, що класова константа глобальна, до неї можна отримати доступ із класу, в якому вона визначена. Класові константи корисні у випадках, коли вам потрібно зберігати певні значення, які відносяться до певного класу.

Визначити класову константу можна за допомогою ключового слова const. Наприклад:

Class MyClass ( const CONSTANT_NAME = value; )

Звернутися до класової константи можна через ім'я класу і оператор::. Наприклад, так:

MyClass::CONSTANT_NAME

На замітку: як і у випадку зі статичними полями та методами, ви можете звернутися до константи через ключове слово self.

Давайте розглянемо класові константи з прикладу. Додамо до класу Member константи, у яких зберігатимуться значення їхньої ролі (учасник, модератор чи адміністратор). Застосувавши константи замість звичайних чисельних значень ми зробили код більш читабельним. Ось скрипт:

Class Member ( const MEMBER = 1; const MODERATOR = 2; const ADMINISTRATOR = 3; private $username; private $level; public function __construct($username, $level) ( $this->username = $username; $this->level = $level; ) public function getLevel() ( if ($this->level == self::MEMBER) return "a member"; if ($this->level == self::MODERATOR) return "a moderator"; "fred", Member::MEMBER); $anotherMember = новий Member("mary", Member::ADMINISTRATOR); echo $aMember->getUsername() . "is". $aMember->getLevel() . "
// відобразить "fred is a member" echo $anotherMember->getUsername() . " is " . $anotherMember->getLevel() .
// відобразить "mary is an administrator"

Ми створили три класові константи: MEMBER, MODERATOR та ADMINISTRATOR, та задали їм значення 1, 2 та 3 відповідно. Потім ми додаємо поле $level для зберігання ролей і трохи змінюємо конструктор так, щоб ініціалізувати ще це поле. У класі з'явився ще один метод - getLevel(), який повертає певне повідомлення залежно від значення поля $level. Він порівнює це значення з кожною з класових констант та повертає потрібний рядок.

Скрипт створює кілька об'єктів із різними ролями. Для завдання об'єктам ролей використовуються саме класові константи, а чи не прості чисельні значення. Потім йдуть виклики методів getUsername() та getLevel() для кожного об'єкта, і результати відображаються на сторінці.

Явна вказівка ​​типів аргументів функцій

У PHP можна не задавати типи даних, так що можна не перейматися тим, які аргументи ви передаєте в методи. Наприклад, ви можете спокійно передати у функцію strlen(), що вважає довжину рядка чисельне значення. PHP спочатку переведе число в рядок, а потім поверне його довжину:

Echo strlen (123); // Відобразить "3"

Іноді явна вказівка ​​типу корисна, але вона може призвести до багів, з якими важко буде впоратися, особливо якщо ви працюєте з такими складними типами даних, як об'єкти.

Наприклад

Подивіться цей код:

Class Member ( private $username; public function __construct($username) ( $this->username = $username; ) public function getUsername() ( return $this->username; ) ) Class Topic ( private $member; private $mub = $em; $this->subject = $subject; ) public function getUsername() ( return $this->member->getUsername(); ) ) $aMember = new Member("fred"); $aTopic = новий Topic($aMember, "Hello everybody!"); echo $aTopic->getUsername(); // Відобразить "fred"

Цей скрипт працює так:

  • Ми створюємо наш клас Member з полем $username, конструктором та методом getUsername();
  • Також створюємо клас Topic для керування статтями форуму. Має два поля: $member і $subject. $member – це об'єкт класу Member, це буде автор статті. Поле $ subject - це тема статті.
  • У класі Topic також міститься конструктор, який приймає об'єкт класу Member та рядок – тему статті. Цими значеннями він ініціалізує поля класу. Він ще має метод getUsername(), який повертає ім'я учасника форуму. Це досягається через виклик методу getUsername() об'єкта Member.
  • На завершення створюємо об'єкт класу Member зі значенням поля username “fred”. Потім створюємо об'єкт класу Topic, передавши йому Фреда та тему статті “Hello everybody!”. Насамкінець викликаємо метод getUsername() класу Topic і відображаємо на сторінці ім'я користувача (“fred”).

Це все дуже добре, але...

Давайте зробимо краще!

Додамо цей фрагмент коду наприкінці:

Class Widget ( private $colour; public function __construct($colour) ( $this->colour = $colour; ) public function getColour() ( return $this->colour; ) ) $aWidget = new Widget("blue"); $anotherTopic = новий Topic($aWidget, "Oops!"); // відобразить "Fatal error: Call to undefined method Widget::getUsername()" echo $anotherTopic->getUsername();

Тут ми створюємо клас Widget з полем $colour, конструктором та методом getColour(), який повертає колір віджету.

Потім ми створимо об'єкт цього класу, а й за ним об'єкт Topic з аргументом $aWidget, коли насправді потрібно передавати автора статті, тобто. об'єкт класу Member.

Тепер спробуємо викликати метод getUsername() класу Topic. Цей метод звертається до методу getUsername() класу Widget. І тому що в цьому класі немає такого методу, ми отримуємо помилку:

Детальний error: Call до undefined method Widget::getUsername()

Проблема в тому, що причина помилки не так легко зрозуміла. Чому об'єкт Topic шукає метод у класі Widget, а не Member? У складній ієрархії класів буде дуже складно знайти вихід із такої ситуації.

Даємо підказку

Було б краще обмежити конструктор класу Topic на прийом аргументів так, щоб він міг приймати як перший параметр об'єкти тільки класу Member, тим самим застерегтися від фатальних помилок.

Це те, чим займається явне вказівку типів. Щоб вказати тип параметра, вставте ім'я класу перед назвою аргументу в оголошенні методу:

Function myMethod(ClassName $object) ( // (дії) )

Давайте підкоригуємо конструктор класу Topic так, щоб він приймав тільки Member:

Class Topic ( private $member; private $subject; public function __construct(Member $member, $subject) ( $this->member = $member; $this->subject = $subject; ) public function getUsername() ( return $this->member->

Тепер спробуємо знову створити об'єкт Topic, передавши йому Widget:

$aWidget = новий Widget("blue"); $anotherTopic = новий Topic($aWidget, "Oops!");

На цей раз PHP відобразить конкретну помилку:

Catchable fatal error: Argument 1 passed to Topic::__construct() мусить бути instance of Member, instance of Widget given, called in script.php on line 55 and defined in script.php on line 24

З цією проблемою буде набагато легше впоратися, тому що ми точно знаємо, в чому саме полягає причина помилки – ми спробували передати до конструктора параметр не того типу, який потрібен. У повідомленні про помилку навіть точно вказані рядки коду, де було викликано метод, що став її причиною.

Ініціалізація та читання значень полів класу за допомогою __get() та __set()

Як ви вже знаєте, класи зазвичай містять поля:

Class MyClass ( public $aProperty; public $anotherProperty; )

Якщо поля класу - public, ви можете отримати доступ до них за допомогою оператора ->:

$ myObject = New MyClass; $myObject->aProperty = "hello";

Тим не менш, PHP дозволяє створювати "віртуальні" поля, яких насправді немає в класі, але до яких можна отримати доступ через оператор ->. Вони можуть бути корисні у таких випадках:

  • Коли у вас багато полів, і ви хочете створити для них масив, щоб не оголошувати кожне поле окремо;
  • Коли потрібно зберігати поле за межами об'єкта, наприклад, в іншому об'єкті, або навіть у файлі або базі даних;
  • Коли вам потрібно обчислювати значення полів “на льоту”, а не зберігати їх значення будь-де.

Щоб створити такі "віртуальні" поля, потрібно додати до класу пару чарівних методів:

  • __get($propName) викликається автоматично під час спроби прочитати значення “невидимого” поля $propName;
  • __set($propName,$propValue) викликається автоматично при спробі задати "невидимому" полю $propName значення $propValue.

"Невидимий" у даному контексті означає, що на даній ділянці коду не можна прямо отримати доступ до даних полів. Наприклад, якщо такого поля взагалі немає в класі, або якщо воно існує, але воно є приватним, і за межами класу немає доступу до такого поля.

Перейдемо до практики. Змінимо наш клас Member так, щоб на додачу до поля $username були ще й інші випадкові поля, які зберігатимуться в масиві $data:

Class Member ( private $username; private $data = array(); public function __get($property) ( if ($property == "username")) null; ) ) ) public function __set($property, $value) ( ​​if ($property == "username") ( $this->username = $value; ) else ( $this->data[$property] = $value; ) ) ) $aMember = new Mem $aMember->username = "fred"; $aMember->location = "San Francisco"; echo $aMember->username . "
// відобразить "fred" echo $aMember->location . ";
// відобразить "San Francisco"

Ось як це працює:

  • У класі Member є постійне поле private $username та private масив $data для зберігання випадкових "віртуальних" полів;
  • Метод __get() приймає єдиний параметр $property – ім'я поля, значення якого потрібно повернути. Якщо $property = “username”, метод поверне значення поля $username. В іншому випадку метод перевірить, чи зустрічається такий $property в ключах масиву $data. Якщо знайдеться такий ключ, він поверне значення даного поля, інакше - null.
  • Метод __set() приймає два параметри: $property - ім'я поля, яке потрібно ініціалізувати, і $value - значення, яке потрібно задати даному полю. Якщо $property = “username”, метод ініціалізує поле $username значенням параметра $value. Інакше додає в масив $data ключ $property зі значенням $value.
  • Після створення класу Member створюємо об'єкт цього класу та ініціалізуємо його поле $username значенням “fred”. Це викликає метод __set(), який задасть значення $username об'єкту. Потім встановлюємо значення поля $location в San Francisco. Оскільки такого поля немає в об'єкті, метод записує їх у масив $data.
  • Насамкінець дістаємо значення $username і $location і виводимо їх на сторінку. Метод __get() дістає дійсне значення $username з поля $username, а значення $location - з масиву $data.

Як бачите, за допомогою методів __get() та __set() ми створили клас, в якому можуть бути як справжні поля, так і будь-які віртуальні. З фрагмента коду, де задається значення тому чи іншому полю, не обов'язково знати, чи існує таке поле чи ні в об'єкті. Через звичайний оператор-> можна задати полю значення або прочитати його.

У прикладі також показано, як легко створити методи, звані “гетерами” і “сеттерами”, для доступу до приватних полів. Нам не потрібно створювати окремі методи getUsername() та setUsername() для отримання доступу до приватного поля $username. Натомість ми створили методи __get() та __set() для маніпулювання даним полем. Це означає, що нам потрібно всього 2 методи загалом, а не по 2 методи для кожного приватного поля.

На замітку: Слово про інкапсуляцію. Використання приватних полів класу в комбінації з гетерами та сеттерами - це краще, ніж використання змінних public. Гетери та сеттери додатково можуть обробляти дані, що задаються полям об'єкта та одержувані з них, наприклад, перевіряти, чи у правильному форматі знаходиться значення, або конвертувати його в потрібний формат. Геттери та сеттери також приховують деталі того, як імплементуються поля класу, що спрощує процес модифікації внутрішньої частини класу, оскільки не потрібно переписувати код, який оперує об'єктами класу. Наприклад, ви раптом захотіли зберігати значення поля у базі даних. Якщо у вас вже були гетери та сеттери, все, що вам потрібно, – це переписати їх. А код, що викликає, залишиться таким же. Ця техніка називається інкапсуляцією, і це одна з головних переваг ООП.

Перевантаження методів за допомогою __call()

Геттери та сеттери використовуються для заборони доступу до приватних змінних. У цьому напрямі використовується метод __call() для заборони доступу до приватним методам. Як тільки з коду викликається метод класу, який або немає, або він недоступний, автоматично викликається метод __call(). Ось загальний синтаксис методу:

Public function __call($methodName, $arguments) ( // (дії) )

Коли робиться спроба викликати недоступний метод класу, PHP автоматично викликає метод __call(), в який передає рядок - ім'я методу, що викликається, і список параметрів, що передаються в масиві. Потім ваш метод __call() повинен буде в певний спосіб обробити виклик і, у разі потреби, повернути значення.

Метод __call() корисний у ситуаціях, коли потрібно передати якусь функціональність класу іншому класу. Ось простий приклад:

Class Member ( private $username; public function __construct($username) ( $this->username = $username; ) public function getUsername() ( return $this->username; ) ) Class Topic ( private $member; private $mub = $em; $this->subject = $subject; ) public function getSubject() ( return $this->subject; ) public function __call($method, $arguments) ( return $this->member->$method($arguments); ) ) $aMember = new $aTopic = новий Topic($aMember, "Hello everybody!"); echo $aTopic->getSubject() . "
// відобразить "Hello everybody!" echo $aTopic->getUsername() .
// відобразить "fred"

Даний приклад схожий на той, що наводився у розділі про явну вказівку типів. Ми маємо клас Member з полем $username і клас Topic з полем - об'єктом класу Member (автор статті) і полем $subject - темою статті. Клас Topic містить метод getSubject() для отримання теми статті, але в ньому немає методу, який би повертав ім'я автора статті. Замість нього є метод __call(), який викликає неіснуючий метод і передає аргументи методу класу Member.

Коли код викликається метод $aTopic->getUsername(), PHP розуміє, що такого методу в класі Topic не існує. Тому викликається метод __call(), який у свою чергу викликає метод getUsername() класу Member. Цей метод повертає ім'я автора методу __call(), а той відправляє отримане значення коду, що викликає.

На замітку: у PHP є й інші методи, що стосуються перевантаження, наприклад __isset(), __unset(), і __callStatic().

Висновок

У цьому уроці ви поглибили свої знання з ОВП у PHP, розглянувши детальніше поля та методи. Ви вивчили:

  • Конструктори та деструктори, корисні для ініціалізації полів та очищення пам'яті після видалення об'єктів;
  • Статичні поля та методи, які працюють на рівні класу, а не на рівні об'єкта;
  • Класові константи, корисні зберігання фіксованих значень, необхідні рівні класу;
  • Явна вказівка ​​типів, за допомогою якого можна лімітувати типи аргументів, що передаються методом;
  • Чарівні методи __get(), __set() та __call(), які служать для отримання доступу до приватних полів та методів класу. Реалізація цих методів дозволяє вам створювати “віртуальні” поля та методи, які не існують у класі, але водночас можуть бути викликані.

Зі знаннями, отриманими в цьому та попередньому уроках, ви можете почати писати на ОВП. Але на цьому все лише починається! У наступному уроці ми поговоримо про силу ООП - здатність класів успадковувати функціональність з інших класів.

Вдалого програмування!

Хочу розглянути принцип документування програмного PHP коду, що базується на DocBlock (DocBlock comments). Багато хто називає його стандартом, хоча якихось авторитетних джерел, що підтверджують це, я не знайшов. Тим не менш, цей формат коментарів поширений у багатьох мовах. Наскільки я розумію, прийшов він із Java і за своїм принципом успадковує Javadoc. Він чудово підтримується та інтерпретується середовищами розробки. Також існує чимало рішень, що дають змогу автоматично генерувати документацію на основі таких коментарів.

DocBlock – це багаторядковий коментар, який вимагає дотримання певного синтаксису. У PHP цей спосіб більш відомий під іншим ім'ям – phpDoc. Воно походить від назви утиліти phpDocumentor, що надає можливість створювати сторінки документації автоматично. Результат її роботи дуже схожий на офіційну документацію PHP.

Про користь написання коментарів написано чимало. Зазвичай заклики ґрунтуються на необхідності дбати про тих, кому доведеться працювати з вашим кодом надалі. Безумовно, я з цим погоджуюсь, але вважаю це дуже поганою мотивацією. Люди егоїстичні і часто діють лише у власних інтересах, що цілком нормально.

Я хочу навести низку аргументів, які, можливо, зможуть переконати, що хороший коментар несе користь передусім нам самим. phpDoc блоки дозволяють збільшити не тільки читання існуючого коду, але й прискорять написання нового за рахунок використання можливостей IDE.

Синтаксис phpDoc

Весь синтаксис будується на використанні дескрипторів та їх значень, обернених у Сі подібний багаторядковий коментар.

/** * @ім'я_дескриптора значення_директиви * @ще_дескриптор * */

Напевно, варто зауважити, що кожен рядок усередині блоку має починатися із символу *. Іменам дескрипторів передує знак @.

phpDoc може описувати як окремі ділянки коду, а й весь файл скрипта, розташовуючись на початку файла. Такий блок називається заголовним.

Нижче пропоную список дескрипторів phpDoc та мої коментар до них.

Дескриптор Значення/Приклад Опис
@abstract none Описує абстрактні класи, методи чи властивості
@access private/protected/public Вказує на модифікатор доступу якості або методу класу.
@author @author Oleg Murashov Ім'я автора коду. phpDocumentor буде шукати текст між кутовими дужками (). Якщо така конструкція буде знайдена і її формат відповідатиме e-mail адресою, то вона буде перетворена на відповідне посилання.
@category @category Zend Ім'я категорії, в яку поєднано кілька пакетів.
@copyright Copyright (c) 2005-2011 Company Інформація, що вказує на правовласника коду.
@deprecated @deprecated 1.7 Дескриптор свідчить про те, що код застарів. Як значення дескриптора вказується версія, починаючи з якої код вважається застарілим.
@example @example /path/example.php опис Вказує шлях до файлу, який містить приклад використання коду. phpDocumentor опублікує приклад, підсвітивши синтаксис та пронумерувавши рядки.
@final none Дескриптор наголошує на методах або властивостях, які не можуть бути перевантажені в дочірніх класах. Також може бути відзначений клас, який не має бути успадкований.
@filesource none Дескриптор може бути використаний лише у заголовному коментарі. У інших місцях вона ігнорується. Вказує phpDocumentor на необхідність вивести вихідний код поточного файлу, підсвітити синтаксис і пронумерувати рядки.
@global @global datatype опис Дескриптор для декларації світових змінних. Для розуміння того, як правильно використовувати цю директиву, найкраще звернутися до відповідної документації.
@ignore none Повідомляє phpDocumentor'у, що цей код не слід включати до аркуша документації
@internal @internal коментар Значення дискриптора не буде додано до файлів документації. Зручно, якщо потрібно залишити коментар тільки для тих, хто працює з кодом
@license @link http://www.example.com/License.txt GPL License Додає посилання на ліцензію, під якою поширюється код
@link @link http://www.example.com Текст посилання Дає можливість додати посилання до будь-якого документованого коду.
@method @method returntype опис Використовується для опису магічного методу __call().
@name @name $globalvariablename Дає можливість послатися на коротке ім'яглобальної змінної, оголошеної за допомогою @global
@package @package Zend_Pdf Вказує ім'я пакета, до якого входить цей програмний код (файл). Використовується в заголовку файлу або в блоці коментарів класу.
@param @param datatype1|datatype2 $paramname опис Дескриптор визначає вхідні параметри для функцій та методів класів. Містить інформацію та тип даних параметра та його опис.
@property
@property-read
@property-write
Дескриптори описують властивості класу, які можуть бути записані або прочитані за допомогою магічних методів __set() та __get(). Якщо властивість доступна для читання та запису, необхідно використовувати директиву @property. Якщо для читання або тільки для запису, то @property-read або @property-write відповідно. Використовуються лише у блоці опису класу.
@return @return datatype1|datatype2 опис Використовується для опису даних, які повертаються функцією або методом класу. Синаксис схожий на дискриптор @param. Якщо тип буде вказано ім'я класу, phpDocumentor автоматично створить посилання на цей клас.
@see @see … Дескриптор пропонує звернутися до іншого докблоку, що вже існує. Наприклад, може бути використаний при документуванні методу, клас якого імплементує інтерфейс, де існує повноцінний докблок. Дозволяє уникнути дублювання коментарів.
@since @since v 0.7 Вказує на версію пакета/класу, з якою елемент, що коментується, став доступним. Наприклад, при описі методу, який з'явився лише в якійсь версії класу, можна вказати цю версію.
@static none Маркує статичні методи чи властивості класу
@subpackage @subpackage Name Використовується для об'єднання кількох пакетів до одного розділу документації. Ігнорується, якщо немає дескриптора @package. Як і @package, міститься в заголовному блоці коментарів.
@todo @todo Something Можна описати майбутні можливі зміни коду
@throws @throws MyException Вказує тип виключення, який може бути повернуто ділянкою коду
@var @var string Вказує тип якості класу
@version @version Version 1.1 Поточна версія реалізації коду, що документується.

Дескриптори @access, @final і @abstract були актуальні в PHP 4, але зараз їх можна не використовувати, оскільки вони втратили актуальність з появою модифікаторів доступу та ключових слів final та abstract.

Кожен docBLock ділиться на кілька секцій:

  • Заголовок;
  • опис;
  • список дескрипторів.

Розділювачем для секцій є порожній рядок.

Приклади використання phpDoc коментарів

Я не хочу наводити синтетичні приклади, тому запозичую код із популярного фреймворку Zend Framework, який, як мені здається, має найтлумачніші та докладніші блоки коментарів.

Я значно вкоротив багатослівні описи методів та класів, уникаючи надмірності в рамках прикладу. Зверніть увагу на загальний принципдокументування та на синтаксис дескрипторів.

Використання дескриптора @see

/** * @see Zend_Acl_Resource_Interface */ require_once "Zend/Acl/Resource/Interface.php";

Приклад блоку коментарів для методу класу

/** * Removes "deny" restrictions from the ACL * * @param Zend_Acl_Role_Interface|string|array $roles * @param Zend_Acl_Resource_Interface|string|array $resources * @param string|array $privileges public function removeDeny($roles = null, $resources = null, $privileges = null) ( return $this->setRule(self::OP_REMOVE, self::TYPE_DENY, $roles, $resources, $privileges); )

Властивість класу

/** * Role registry * * @var Zend_Acl_Role_Registry */ protected $_roleRegistry = null;

А ось один із прикладів підказок (), які може пропонувати середовище розробки, даному випадку Eclipse.

Також середовище розробки може виводити підказки, що базуються на docBlock. Наприклад, підказка, що з'являється під час наведення на ім'я методу Zend_Acl_Role_Registry::add() .

Майже детективний сюжет

"Це... разом з прикладеними до нього численними описами проведених дослідів і пояснювальних креслень було відіслано... з гінцем, який перевалив через гірський хребет, плутав по непрохідних болотах, плив по бурхливих річках, наражався на небезпеку бути роздертим дикими звірами, померти від туди, померти від того," померти від того," померти від того," померти.

"Сто років самотності" Г.Г.Маркес

Нині все набагато простіше. Якось опівночі я ввімкнув комп'ютер і вийшов в Інтернет, щоб перевірити пошту.

"Доброго дня, ВААЛ!

Надсилаємо цікавий матеріал. Це інтерв'ю та статті одного товариша. Було б непогано дати їхній детальний аналіз. див. аттач"

А в атачі архів на 500 kb тексту.

Натискаю кнопку Replyі пишу:

"Вітаю.

З цікавістю прочитав Вашого листа. Аналіз можливий, але для цього необхідно обговорити умови.

Відсилаю.
Лист повертається. Не вказано адресу!

Зовсім не звернув уваги те що, що вихідне лист не містило зворотного адреси. Виходить, його пропустили через анонімайзер. Знайомі штучки-дрючки.
Вирішив уважніше подивитися, що мені прислали в атачі.

Сімнадцять файлів з іменами: 9912, 0001, 0003, 0006, 0007, 0008, 0009, 0010, 0011, 0012, 0101, 0102, 0103, 0104, 01 і - це рік, а дві останні - місяць.

Перша фраза файлу 9912 - "Цей сайт виник через помилку, досконалої днями Ю.М.Лужковым, Е.М.Примаковым чи кимось із їхніх відповідальних холуев." Щось знайоме. Знову лізу в Інтернет у Yandex, вводжу всю фразу цілком і тисну Знайти. Опаньки! Перше знайдене посилання все розставляє на свої місця:

Заяви та інтерв'ю керівництва ФЕП Показати знайдені слова
Заяви та інтерв'ю керівництва ФЕП ПУБЛІКАЦІЇ ЗАЯВИ ТА ІНТЕРВ'Ю КЕРІВНИЦТВА ФЕП
Цей сайт з'явився через помилку, скоєну днями Ю.М.Лужковим, Є.М.Примаковим або кимось із їхніх відповідальних холуїв. Втім, ця помилка – наслідок більшої помилки, зробленої раніше.
http://www.fep.ru/publications/management/ovg31299i.html - 10К - сувора відповідність
Перехід до категорії Внутрішня політика / Подібні документи / Ще з сервера не менше 1 док.

Опускаю деталі висновків і переходжу до резюме.

Мені надіслали сімнадцять файлів інтерв'ю та статей Гліба Павловського, розміщених на сайті його ФЕПа http://www.fep.ru. Безсумнівно, лист, що надіслав, є щирим доброзичливцем Павловського, оскільки передбачливо скористався анонімайзером. Він дуже зацікавлений в аналізі, оскільки попередньо видалив з текстів інтерв'ю все, що не є словами Павловського. Для цього потрібно було 500 kb тексту вручну перелопатити. Робота чимала та нудна! Все зробив, щоб полегшити мені завдання, спокусник чортів.

Початкове бажання відправити все в кошик відступило, і я вирішив проаналізувати надісланий матеріал. Але щоб у свою чергу не спокушати Доброзичливцяя майже нічого про самого Павловського не скажу. Не засмучуватиму його описом виявлених пороків Гліба Ольговича. Вчиню інакше.

Так як результати будуть в кінцевому підсумку розміщені на сайті (не пропадати їм даром!), то спробую на даному матеріалівирішити задачу визначення того, як ставиться автор тексту до різних згадуваних їм персон (у тому числі і до самого себе:-))). Це цікаво тому, що дозволяє на живому прикладі продемонструвати ще один із методів ВААЛ-аналізу.

Життя вдалось!

Але без кількох слів про самого Павловського не обійтися.

Нагадаю, що таке Валентність. Будь-яка наша діяльність протікає у певних умовах. На її успішність впливають різні предмети, явища, інші люди, які вступають у конкуренцію або навпаки, сприяють досягненню поставлених нами цілей. Залежно від характеру такого впливу їх можна віднести до тих, хто має або позитивну, або негативнувалентність. Валентність перестав бути властивістю самих об'єктів, лише проявляється у межах певної структури відносин.

Червона кривалінія показує ступінь виразності позитивної валентності в аналізованих статтях та інтерв'ю. Синя крива- Ступінь вираженості негативної валентності. Зелена крива- це різниця між значеннями позитивної та негативної валентності. Зелена прямалінія - це лінійний тренд різниці між значеннями позитивної та негативної валентності. Сильно закручено, але все робилося саме заради цієї зелений прямий.

Що ми бачимо на діаграмі? А бачимо ми те, що за два минулі роки зелена пряма зросла від -3 домайже +3 . Дуже сильне зростання! Це означає, що з часом все більше і більше предметів, явищ, інших людей сприяють досягненню поставлених цілей Павловським.

Якщо двома словами, то
Життя вдалось!

Про інших та про себе

Як я вже писав вище, нашою метою буде виявлення ставлення Гліба Павловського до різних людей, яких він згадував у своїх статтях та численних інтерв'ю. Як об'єкт дослідження ми вибрали: Березовського, Гусинського, Єльцина, Лужкова, Примакова, Путінаі самого Павловського(Під псевдонімом Я).

Вирішити це завдання за допомогою системи ВААЛ-2000 можна двома способами. За будь-якого їх попередньо потрібно створити сім категорій згадуваних персонажів. Тобто. на основі всього тексту створюємо словник, а вже з його допомогою формуємо категорії БЕРЕЗІВСЬКИЙ, ГУСИНСЬКИЙ тощо.

Перший метод. Запустивши контент-аналіз, дивимося, як нові категорії пов'язані (корелюють) із вбудованими категоріями. На основі значних зв'язківробимо глибокодумні висновки.

Другий спосіб (використаний нами) – контекстний аналіз. Для знайомих із сучасним станом контент-аналізу скажу, що це просто контент-аналіз collocationsзгаданих персон. Для тих, хто не знає, що таке collocationпоясню.

Для кожної згадки в тексті Лужкова ми можемо взяти слова, що знаходяться від нього в околиці. Поєднавши такі околиці для всіх згадок Лужкова разом, ми й отримаємо для нього collocation. Що взяти як околиця, залежить від цілей дослідження. У нашому випадку ми брали слова, які просто перебувають в одній пропозиції.

У пропозиції "Цей сайт виник через помилку, скоєної днями Ю.М.Лужковым,Е.М.Примаковым чи кимось їх відповідальних холуев." на околиці Ю.М.Лужковимувійшли слова: цей, сайт, з'явився, в силу, помилки, досконалої, на, днях, Є.М.Примаковим, або, кимось, з, їх, відповідальних, холуїв.

Подальші наші дії такі. Для кожної з оціночних шкал (категорій) ми обчислюємо її середнє по всьому масиву тексту. Потім обчислюємо оцінки цих шкал для отриманих collocationsі порівнюємо їх із загальним середнім значенням. У разі емоційно-лексичних шкал операція порівняння – це просто взяття різниці двох величин, а у разі категорій – різниця середніх, нормована за стандартним відхиленням. Як бачимо, все дуже природно та просто. Тому я більше не нікому морочитиму голову, а перейду безпосередньо до результатів.

Результати


За емоційно-лексичними оцінками отримали такі результати:
Персона Резюме
Березовський Темпераментний, розумний, діловий, практичний, пунктуальний, акуратний, вольовий, розкутий
Гусинський Активний, діловий, розкутий, невитриманий, дратівливий, лицеменний, брехливий, лукавий, догодливий, непослідовний
Єльцин Енергійний, колоритний, вольовий, запальний, примхливий, лицемірний, жорстокий
Лужків Думаючий, розумний, непокірний, сильний, зібраний, досвідчений, упертий, діловий, яскравий, але в той же час шкідливий і віроломний
Примаків Розумний, освічений, яскравий, самобутній, елегантний, замкнутий, недобросовісний, лицемірний та лукавий
Путін Обов'язковий, сумлінний, чесний, справедливий, слушний, вимогливий, вольовий
сам Павловський Добрий та серцевий

Показником того, наскільки емоційно небайдужа Павловському та чи інша людина, може бути сума абсолютних величин оцінок за всіма шкалами. При цьому ми виходимо з припущення, що чим небайдужі до людини, тим більше емоційно навантажені слова щодо нього вживаємо. Результат на наступній діаграмі:



Отримуємо, що найбільш небайдужий Павловський до Гусинськомуі Лужкову Березовський, Примаков, Єльцин, Путіні сам Гліб Олегович. Найбільш терпимо він ставиться лише до себе. Якщо згадати події останніх років, то результати схожі на правду.


Суму позитивних категорних оцінок можна інтерпретувати як психологічну яскравість особистості уявленні Павловського.



На першому місці Лужків. Потім у порядку спадання йдуть Єльцин, Примаков, Путін, Гусинський, сам Павловськийі в кінці Березовський. Як бачимо, Лужков займає стійке місце у душі Павловського.

Невелике розслідування завершено. Тепер можна зі спокійною совістю відправити надіслані матеріали в кошик для сміття і зайнятися більш серйозними справами.