[wp-trac] [WordPress Trac] #47375: Blocks API: Add server-side `serialize_block()`

WordPress Trac noreply at wordpress.org
Thu Jun 6 14:12:20 UTC 2019


#47375: Blocks API: Add server-side `serialize_block()`
--------------------------------------+------------------------------
 Reporter:  dmsnell                   |       Owner:  (none)
     Type:  enhancement               |      Status:  new
 Priority:  normal                    |   Milestone:  Awaiting Review
Component:  Editor                    |     Version:  trunk
 Severity:  normal                    |  Resolution:
 Keywords:  has-patch has-unit-tests  |     Focuses:
--------------------------------------+------------------------------

Comment (by birgire):

 @dmsnell thank you for an informative reply.

 > Admittedly I have mixed feelings but I'm hesitant to add superfluous
 comments when I think they are
 > incidentally needed. serialize() is a wildly-generic term and I'm not
 personally familiar with any
 > common trends that create some kind of specialized version of
 serialize() for specific data types. I
 > won't try and block an additional comment but in some ways I find the
 extra explanation a little unwarranted.

 My initial thought was that this new PHP function was related to the
 commonly used {{{serialize()}}} function in PHP, but I might be the only
 one experiencing that initial thought :-) Maybe a general dev-note
 introducing this new function, might then be more relevant instead?

 > That's a shortcut based on the way the blocks are designed. We could
 have replaced it with (the
 > arguably more reliable) $block['innerContents'][0] but I left it short
 for clarity. Maybe that's the
 > wrong call - not sure.

 That sounds good to me.

 > I've intentionally not validated the inputs and while that may sound
 bizarre I do it for the sake of
 > improving the quality. First of all, I think if we are worried about
 invalid input we might gain by
 > addressing this from another angle - make it clearer that this should
 only get the contents of the
 > block structure provided by parse_blocks() or equivalents.

 > At this low level I consider it a game of tense alliances between all
 the different subsystems. If
 > any block data is passed around which doesn't conform to our
 expectations than multiple systems will
 > fail - to that end I'd rather we fail right out front at the boundary
 then cover the error - it's
 > going to fail either here or right away somewhere else.

 > That block structure does bring certain assumptions and you're right to
 call them out. I'm not sure
 > if I'll get this in but some links to documentation/specifications can
 hopefully help fill in the
 > contextual gap here.

 Yes I think it would be helpful to mention the relation to
 {{{parse_blocks()}}} in the docs.

 As this will become a public API (unlike the underscore {{{_}}} prefixed
 functions), I can imagine it will be used in all kinds of situations and
 all kinds of inputs.

 I think it could be helpful to validate the input, in such a way that the
 function will not output a "block zombie", for my lack of a better word
 :-)

 This kind of output might look valid from a distance, but can scare the
 hell out of us when we look closer :-)

 Here's an example:

 {{{
 serialize_block( [ 'blockName' => [] ] )

 }}}

 with output:

 {{{
 "<!-- wp:Array /-->"

 }}}


 I wonder if these kind of outputs should be allowed to go through?

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/47375#comment:9>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list