Тест 1. Передача данных по ссылке.
[php]<?php
function byReference(&$variable = 5) {
++$variable;
}
$a = 12;
byReference($a);
echo $a;
/ ==================== /
class MyClass{
public $value;
}
$a = new MyClass;
$a->value = 1;
$b = $a;
$b->value = 2;
echo $a->value;
[/php]
Тест 2. Вызов неопределенного метода и использование магической функции __call
[php]<?php
class TestClass extends TestClassBase {
public function __call($method, $arguments)
{
echo 'method: '.$method.PHP_EOL;
return $this->$method($arguments[0]);
}
}
class TestClassBase {
protected function getUndefined($name) {
echo $name.PHP_EOL;
}
}
$tc = new TestClass();
echo $tc->getUndefined('undef');
[/php]
Тест 3. Пример работы со строками
[php]<?php
$var1 = "10foos";
$var2 = "20 bars";
print "implode("", array($var1, $var2)) ".implode("", array($var1, $var2));
print "var1.var2 ".$var1.$var2;
print "var1 + var2 ". ($var1 + $var2);
[/php]
Тест 4. Как наследуются статические члены класса
[php]<?php
class Foo {
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
class Bar extends Foo {
public function fooStatic() {
return self::$my_static;
}
}
print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
print $bar->staticValue() . "\n";
[/php]
Тест 5. Задача из тестового задания
[php]<?php
$oranges = 10;
$apples = 5;
$string = "I have %d apples and %d oranges";
echo PHP_EOL;
printf($string, $apples, $oranges);
echo PHP_EOL;
print sprintf($apples, $oranges);
echo PHP_EOL;
sprintf($string, $oranges, $apples);
[/php]
Тест 6. Проверял как работает autoload
[php]<?php
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
$obj = new MyTestClass();
echo $obj->testVar;
[/php]
Тест 7. str и float
[php]<?php
$var1 = '0.0123';
if ($var1 > 0) {
echo PHP_EOL.'More'.PHP_EOL;
} else {
echo PHP_EOL.'Less'.PHP_EOL;
}
[/php]
Тест 8. Тестирование исключений. Был очень похожий пример в реальном коде
[php]<?php
class MyException extends Exception {
}
class TestException {
public static function testExc() {
throw new MyException('MyException '. __CLASS__);
}
}
class Test2Exception {
public static function test2Exc() {
TestException::testExc();
}
}
class Main {
public function methodMain() {
try {
Test2Exception::test2Exc();
} catch (Exception $e) {
echo $e->getMessage().PHP_EOL;
}
}
}
$m = new Main();
$m->methodMain();
[/php]
Тест 9. merge и + для массивов
[php]<?php
$arr1 = array('comment1', array(1,2,3,4,5,6));
$arr2 = array('comment2', array(3,3,3,4,5,6));
echo 'arr1'.PHP_EOL;
print_r($arr1);
echo PHP_EOL.'arr2'.PHP_EOL;
print_r($arr2);
$m = array_merge($arr1, $arr2);
echo "merge ".PHP_EOL;
print_r($m);
$new2 = $arr1 + $arr2;
echo "plus ".PHP_EOL;
print_r($new2);
[/php]
Тест 10. Ленивая проверка. Если первое условие не выполнено, то второе не проверяется
[php]<?php
$arr = array('t1' => 0);
if($arr['t1'] AND $arr['t2']) {
echo 'not';
} else {
echo 'lazy';
}
[/php]
Прошлые записи
- Telegram бот на Rust, два, три и Raspberry Pi 2
- Мысли насчет ChatGPT
- Mashinka на Rust. Первые впечатления.
- Перевод - Почему бумага формата А4 имеет размер 297 мм на 210 мм?
- Эволюция веб-приложений. От раздачи статики до Serverless
- Эволюция веб-приложений. От статичного HTML до Single Page Application и Progressive Web Application
- Переезд в Калининград
- Была ли спецоперация на Украине неизбежна?
- О serverless технологии для чатботов
- Свободное время на улучшение блога
- О жизни в Калининграде спустя год