Пользовательские функции в объектно-ориентированном PHP

В PHP есть множество функций, которые позволяют в качестве параметра использовать имя так называемой user defined function — функция, написанная для собственных нужд. Все было хорошо, пока не перешел на ООП.

Как указать в ООП имя собственной функции? Очень просто.

Допустим, мы хотим использовать функцию array_walk(). В процедурном стиле мы бы написали следующее:

1
array_walk($array_values, 'myFunction');

В ООП эта конструкция не сработает, но есть выход:

1
array_walk($array_values, array($this, 'myFunction'));

Указав массив array($this, ‘myFunction’) мы указываем, что нужно использовать метод “myFunction” из текущего класса.

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

Samba – запретить удаление файлов

Столкнулся с задачей настройки Samba таким образом, чтобы пользователи могли записывать файлы, но удалять не могли. Реализация под linux.

Припустим, у нас есть директория-шара. В smb.conf прописано:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Files]
comment = Files
path = /home/samba/Files
valid users = +UserGroup
read list = +UserGroup
write list = +UserGroup
inherit permissions = yes
browseable = yes
guest ok = no
create mask = 664
directory mask = 775

Нам интересны две последние строчки. Create mask означает маску для создаваемых файлов, directory mask — для директорий.

После этого нужно перезагрузить сервис самбы:

1
$ service smb restart

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

1
$ chmod -R 1775 Files/