"PHP" / Говнокод #23425 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
<?php
class Foo implements JsonSerializable {
  public function jsonSerialize() {
    return new self;
  }
}

# Segfault!
var_dump(json_encode(new Foo));

https://habrahabr.ru/company/mailru/blog/340242/
😆

Запостил: inho inho, (Updated )

Комментарии (3) RSS

  • В языках где нет цветовой диф выбора между стеком и кучей слово "new" лишено смысла

    Почему-то питон и котлин это понимают
    Ответить
    • Аналогичный код на Perl тоже сегфолтится (правда только при использовании JSON::XS на локалхосте): https://ideone.com/xBSfTz

      #!/usr/bin/perl
      
      use strict;
      use warnings;
      
      use JSON qw();
      
      package Foo;
      
      sub new {
          return bless {} => shift;
      }
      
      sub TO_JSON {
          return new Foo;
      }
      
      package main;
      
      my $json = JSON->new()->convert_blessed(1)->pretty(1);
      print $json->encode(new Foo);
      Ответить
      • >> return bless {} => shift;
        Более всего я ценю перл за простоту и лакончиность
        Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8