2013-12-23 3 views
0

Я хочу включить этот код https://github.com/emotionLoop/visualCaptcha-PHP в качестве библиотеки.Как передать URL-адрес конструктору класса php

Так я в том числе класса из вне папки, как это:

<?php printCaptcha('contact_us_form_vc',$_FORM_TYPE,$_FIELD_NAME); ?> 

function printCaptcha($formId = NULL, $type = NULL, $fieldName = NULL) { 
    require_once(SITE_ROOT . '/visualCaptcha/inc/visualcaptcha.class.php'); 
    $visualCaptcha = new \visualCaptcha\Captcha($formId, $type, $fieldName); 
    $visualCaptcha->show(); 
} 

Внутри класса есть переменные, которые я хочу, чтобы перейти от моей функции:

private $htmlClass = 'visualcaptcha.class.html.php'; 
    public static $imagesPath = 'images/visualcaptcha/'; 
    public static $audiosPath = 'audio/visualcaptcha/'; 
    public static $imageFile = 'image.php'; 
    public static $audioFile = 'audio.php'; 

Любые идеи, как передать их?

Что я сделал:

function printCaptcha($formId = NULL, $type = NULL, $fieldName = NULL, $htmlClass = NULL) { 
    require_once(SITE_ROOT . '/visualCaptcha/inc/visualcaptcha.class.php'); 
    $visualCaptcha = new \visualCaptcha\Captcha($formId, $type, $fieldName, $htmlClass); 
    $visualCaptcha->show(); 
} 

И чем внутри класса:

public function __construct($formId = NULL, $type = NULL, $fieldName = NULL, $accessibilityFieldName = NULL, $htmlClass = NULL) 

И добавил:

if (! is_null($htmlClass)) { 
      $this->htmlClass = $htmlClass; 
     } 
+2

Что вы пробовали? Есть ли упоминание о том, как обновить их в руководстве? 'Public static' можно обновить с помощью' Captcha :: $ imagesPath'. «Закрытый» нельзя обновить, если только не существует метода, или вы модифицируете класс, чтобы его разрешить. –

+0

@RocketHazmat вообще не упоминается в документации! Я даже не мог пройти мимо частного. –

+1

, поскольку RocketHazmat сказал, что нет способа (насколько я знаю) обновить частные без какого-либо метода. Однако вы можете добавить свой собственный метод к классу для доступа к частной переменной и изменить его.Для публичных STATIC просто используйте стандартный синтаксис Classname :: $ variable ... – briosheje

ответ

1

Согласно комментариям, быстрый пример о доступе к Частная переменная с методом может быть такой:

Если у вас есть класс с частной переменной:

class testClass { 
    private $privateVar; 
} 

И вы хотите, чтобы изменить его значение, вы можете сделать что-то подобное:

class testClass { 
    private $privateVar; 

    public function updatePrivateVar($value) { 
    $this->privateVar = $value; 
    } 
} 

Итак, если у вас есть переменные :

private $htmlClass = 'visualcaptcha.class.html.php'; 
public static $imagesPath = 'images/visualcaptcha/'; 
public static $audiosPath = 'audio/visualcaptcha/'; 
public static $imageFile = 'image.php'; 
public static $audioFile = 'audio.php'; 

и при условии, что вы хотите обновить их, для публичных вам просто нужно использовать этот синтаксис :

Classname::$publistaticvar = $newValue; 

Пример:

Captcha::$htmlClass = $htmlClass; 

В то время как для частных, если у вас есть метод, как один предложенный выше, просто создать объект вашего класса Защитный код (если вы уже не имеете создал один):

$captcha = new Captcha; 

и использовать свой метод для изменения собственного переменного значения:

$captcha->updatePrivateVar($newValue); 

Я не уверен, что это то, что вы хотите сделать, но из того, что мы обсуждали в комментариях, должно быть так.

надеюсь, что это поможет!

+0

* ah, molto buono anche *. Да, я говорю (некоторые) по-итальянски;) Там должно быть больше таких людей, как вы, которые не заботятся о репликах (* хотя очки действительно служат цели *), но на самом деле «помогают». Кредит выдается, когда кредит должен быть предоставлен. '$ credit =" + 1 ";';) ciao. –

+0

* Плюс, * Мне трудно понять классы, и ваш ответ помог мне понять их гораздо больше. –

+1

@ Fred-ii-: Ну, спасибо! Просто пытаясь сделать всю работу здесь в stackoverflow. – briosheje

Смежные вопросы