гинеколог отечественного веб-дизайна (ao_mmm) wrote,
гинеколог отечественного веб-дизайна
ao_mmm

Программирование с акцентом

"Программирование с акцентом" -- это использование (или попытка использования) привычек, полученных при работе с одним языком, в другом языке.

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

// 1. php-акцент
function getTwo() {
   return array(
     'first'  => 111,
     'second' => 222,
   );
}

$result = getTwo();
print "First: $result[first], second: $result[second]";


// 2. Perl / LISP акцент
function getTwo() {
   return array(111, 222);
}

list($first, $second) = getTwo();
print "First: $first, second: $second";


// 3a. C-акцент
function getTwo(&$first, &$second) {
   $first = 111;
   $second = 222;
}

$first;
$second;
getTwo($first, $second);
print "First: $first, second: $second";


// 3b. C-акцент
class structTwo {
   public $first;
   public $second; 
}

function getTwo(&$first, &$second) {
   $struct = new structTwo;
   $struct->first = 111;
   $struct->second = 222;
}

$struct = getTwo($first, $second);
print "First: $struct->first, second: $struct->second";


// 4. Java-акцент 
class TransferObjectTwo {

   private $first;
   public function getFirst() { return $this->first; }

   private $second;
   public function getSecond() { return $this->second; }

   public function __construct($first, $second) {
     $this->first = $first;
     $this->second = $second;
   }
}

/**
 * @return TransferObjectTwo
 */
function getTwo() {
   return new TwoTransferObject(111, 222);
}

$obj = getTwo();
print "First: " . $obj->getFirst() . ", second: " .  $obj->getSecond();

Поправляйте.
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 1 comment