Ne anlama geliyor "port" için

3 Cevap php

Ben bir açık kitap testi bu hafta var ve ben test eski bir kod grubudur sağlanan sayede bir egzersiz ve 'port' için bir gereklilik kod olacağını haberdar oldum.

Ben açık-kitap testi ne olduğunu anlamak ve 'taşıma' ne olabilir bunun gereksinimi (vb düşünce süreci test) ama (bir ihtimal) içerir? Ben 'taşıma' ne olduğu belirsiz bir fikrim yok.

3 Cevap

Taşıma başka bir platform üzerinde geliştirilen hangi platformdan göç kodu ifade eder - bu PHP Unix, Windows veya ASP olacak.

Genellikle bir OS diğerine veya bir donanım platformu diğerine, aynı zamanda potansiyel farklı bir programlama dili veya aynı programlama dili farklı bir sürümünden - taşıma bir ortamdan diğerine kod göç.

Bağlamda, ben size eski bir PHP sürümü için eski bir kodlama tarzında yazılmış PHP kodu vermek ve modern kodlama standartları PHP ile modern bir sürümünde düzgün çalıştırmak için kodu güncellemek isteyecektir olduğunu tahmin ediyorum.

It could mean that you get some (old) php4 code and are supposed to port it to php5.
In that case the code should run with the setting error_reporting(E_ALL|E_STRICT) without warning messages. Also check the description of each function/method whether it contains a "This function has been DEPRECATED" note/warning somewhere.
Imo likely candidates are: sessions, classes, ereg (posix regular expressions) maybe even register_globals and allow_call_time_pass_reference.
Maybe you're also supposed to spot the usage of "old" workarounds and to replace them with newer functions. E.g.

// $s = preg_replace('/foo/i', 'bar', $input);
// use php5's str_ireplace() instead
$s = str_ireplace('foo', 'bar', $input);

Ama bu kapalı ettik konulara bağlıdır.


Örneğin "Php5 için Port Bu php4 kod":

<?php
class Foo {
  var $protected_v;

  function Foo($v) {
    $this->protected_v = $v;
  }

  function doSomething() {
    if ( strlen($this->protected_v) > 0 ) {
      echo $this->protected_v{0};
    }
  }
}

session_start();
if ( session_is_registered($bar) ) {
  $foo = new Foo($bar);
  $foo->doSomething();
}

Ve cevap olabilir

<?php
class Foo {
  // php5 introduced visibility modifiers
  protected $v;

  // the "preferred" name of the constructor in php5 is __construct()
  // visibility modifiers also apply to method declarations/definitions
  public function __construct($v) {
    $this->v = $v;
  }

  public function doSomething() {
    if ( strlen($this->v) > 0 ) {
      // accessing string elements via {} is deprecated
      echo $this->v[0];
    }
  }
}

session_start();
// session_is_registered() and related functions are deprecated
if ( isset($_SESSION['bar']) ) {
  $foo = new Foo($_SESSION['bar']);
  $foo->doSomething();
}