PHP, эквивалентный из друга или внутренний

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

#!/bin/bash

for f in *.csv
do
    mysql -e "load data infile '"$f"' into table my_table" -u username --password=your_password my_database
done
32
задан smack0007 25 November 2008 в 19:03
поделиться

2 ответа

PHP не поддерживает дружеских объявлений. Возможно моделировать это использование PHP5 __, добираются и __ методы установки и осмотр следа только для разрешенного друга классы, хотя код, чтобы сделать это довольно неуклюж.

Существует некоторый пример кода и обсуждение темы на сайте PHP:

class HasFriends
{
    private $__friends = array('MyFriend', 'OtherFriend');

    public function __get($key)
    {
        $trace = debug_backtrace();
        if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) {
            return $this->$key;
        }

        // normal __get() code here

        trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR);
    }

    public function __set($key, $value)
    {
        $trace = debug_backtrace();
        if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) {
            return $this->$key = $value;
        }

        // normal __set() code here

        trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR);
    }
}

(Код, доказанный tsteiner в nerdclub, отмечает точкой сеть на bugs.php.net),

45
ответ дан 27 November 2019 в 21:07
поделиться

Я вполне уверен, что Вы ищете, "защищен" или "частный", в зависимости от Вашего варианта использования.

при определении функции в классе, и Вы только хотите это доступный себе, Вы определите его этот путь:

private function foo($arg1, $arg2) { /*function stuff goes here */ }

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

protected function foo($arg1, $arg2)

я вполне уверен, что по умолчанию в PHP5, функции являются государственными, означая, что Вы не должны использовать следующий синтаксис, но это является дополнительным:

public function foo($arg1, $arg2) { /*function stuff goes here */ }

необходимо будет все еще инстанцировать объекта перед использованием государственной функции. Таким образом, я просто буду полон и сообщу что, чтобы использовать функцию в классе, не инстанцируя объекта, несомненно, использовать следующий синтаксис:

static function foo($arg1, $arg2) { /*function stuff goes here */ }

, Который позволит Вам использовать функцию, только ссылаясь на класс, следующим образом:

MyClass::foo($a1, $a2);

Иначе, необходимо будет сделать следующее:

$myObject = new MyClass();
$myObject->foo($a1, $a2);
-16
ответ дан 27 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: