Добрый день, пытаюсь создать свой модуль на Drupal 7, и столкнулся со сложностями понимания, как использовать свои классы и их объекты
На текущий момент модуль представляет следующее
mymodule.info
<?php
name = mymodule name
description = mymodule description
version = 7.x-1.0
core = 7.x
files[] = mymodule.info
files[] = mymodule.module
files[] = mymodule.ldap.inc
?>
mymodule.module
<?php
function mymodule_menu() {
$items = array();
$items['some-path'] = array(
'title' => 'Some title',
'page callback' => 'some_page_callback',
'type' => MENU_NORMAL_ITEM,
'access callback' => TRUE,
);
return $items;
}
function
some_page_callback() {
$form = drupal_get_form('some_form');
$form = drupal_render($form);
return $form;
}
function
some_form($form, &$form_state) {
//$new_ldap = new ldap();
//$new_connect = $new_ldap->connect($ldap->ldapserver, $ldap->ldapport);
$form = array();
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return
$form;
}
?>
mymodule.ldap.inc
<?php
class ldap {
public
$ldapserver = "0.0.0.0";
public $ldapport = "389";
public $basedn = "CN=service_user,DC=ad,DC=ad";
public $basepass = "password";
public static function
connect($server,$port) {
$connection = ldap_connect($server,$port);
ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
return $connection;
}
public static function
bind($connection,$basedn,$basepass) {
$ldaprdn = $basedn;
$ldappass = $basepass;
$bind = ldap_bind($connection, $ldaprdn, $ldappass);
}
public static function
search($connection, $searchdn, $filter, $attributes = array()) {
$sr = ldap_search($connection, $searchdn, $filter, $attributes);
if ($sr) {
$info = ldap_get_entries($connection, $sr);
}
function
addRecord($connection, $adddn, $record) {
$addProcess = ldap_add($connection, $adddn, $record);
}
}
public static function
close($connection) {
ldap_close($connection);
}
}
?>
Проблема заключается в том, не понимаю как мне создать новый объект своего класса в mymodule.module чтобы работать с ним
В обычном PHP я бы написал бы это так
<?php
$new_ldap = new ldap();
$new_connect = $new_ldap->connect($ldap->ldapserver, $ldap->ldapport);
...
?>
А как это же реализуется в модулях друпала?
Комментарии
А зачем создавать объект класса, у которого все методы статические?
Честно говоря руководствовался этим материалом http://xandeadx.ru/blog/drupal/708
Похоже не разобрался :/
Создавайте объект внутри функции , хотя это весьма коряво.
Либо передавайте объект аргументом.
Области видимости переменных не позволят вам работать так как вы хотите
По поводу аргумента вопрос открыт, друпал использует функции функций , так называемые callbacks ,с функцией call_user_func_calback ,как там происходит наследование аргументов , мне точно неизвестно, нужно будет почитать про это