JotJive.

Advanced PHP Usage: Return type contravariance and parameter type covariance

Article image

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt pharetra finibus. Vestibulum suscipit, orci ac accumsan volutpat, arcu lectus ornare sapien, ut egestas magna risus eget libero. Mauris ultricies magna a interdum varius. Aliquam erat volutpat. Sed finibus, eros quis scelerisque aliquam, leo ligula vehicula est, in faucibus felis eros a tellus. Quisque sed mauris nibh. Morbi scelerisque laoreet libero, vitae ultrices dolor placerat in. In egestas eros laoreet purus imperdiet, ac imperdiet nisl eleifend. Nunc sollicitudin metus sed magna efficitur semper. Integer enim mi, egestas sit amet consectetur quis, condimentum et orci. Suspendisse vel tempus arcu, in varius nisi. Maecenas laoreet lorem tristique aliquam aliquam.

Nam porta orci a eros commodo, eu euismod justo tincidunt. Vestibulum nisl neque, elementum pharetra nibh et, ornare efficitur libero. Maecenas eget porttitor ante, non ultrices nibh. Aenean sagittis, massa id efficitur rhoncus, purus ipsum tristique sem, eget aliquam diam mi ac ex. Fusce vitae velit urna. Nam felis ante, rutrum quis vehicula eget, blandit non ligula. Praesent eu nisi eu neque semper vulputate at et magna. Proin vitae velit sodales, tincidunt risus id, cursus enim.

Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Quisque nec sem ut nulla tempus venenatis. Sed lacinia, lorem sed pretium rhoncus, felis justo dictum ligula, a rhoncus lectus orci vel lorem. Phasellus nulla est, luctus vitae ipsum nec, hendrerit aliquet lacus. Morbi iaculis velit lectus, at dapibus nisl ultricies a. Duis in augue ac diam tristique laoreet non ultrices orci. Praesent arcu quam, eleifend et erat non, commodo egestas orci. Donec dolor risus, interdum id feugiat a, placerat ut dui. Curabitur sit amet eros tempor mi commodo pretium. Mauris ut pharetra odio, a auctor est. Proin rutrum metus id interdum gravida. Nulla convallis lobortis urna, non rhoncus felis ultricies et.

Mauris quis semper nisi. Nullam cursus arcu ut dui semper lacinia a vitae ipsum. Praesent porta sodales quam, at eleifend quam. Phasellus sapien lacus, dictum id diam sit amet, scelerisque egestas eros. Ut ac nulla ex. In vel imperdiet lacus. Nulla et posuere libero, id auctor ipsum. Etiam a justo ut metus molestie tincidunt. Nullam dolor ex, auctor in ante ac, cursus iaculis ante.

Sed in nunc quis erat elementum porttitor. Nam lacinia condimentum ultricies. Sed ac auctor orci. Praesent at finibus purus. Pellentesque ultrices ut felis eu egestas. Fusce molestie ultricies mauris, eu rutrum dui ultricies eu. Sed bibendum, ex at dignissim ultrices, neque nisl sagittis massa, vitae pharetra ligula elit eget risus. Curabitur diam massa, mattis ac interdum sit amet, dignissim non odio. Quisque a dolor non lectus pretium egestas eu quis mauris. Integer eros enim, fringilla eget diam ut, dignissim facilisis eros. In non pretium risus. Suspendisse ut ligula lobortis, semper massa at, auctor elit. Vivamus eget scelerisque massa.

Integer consectetur bibendum luctus. Vestibulum sit amet eros in purus vehicula finibus vel vitae odio. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean arcu odio, varius venenatis orci id, interdum dictum ex. Ut dignissim id ipsum a vehicula. Etiam urna neque, consequat nec urna at, congue ultricies erat. Nunc a imperdiet ex. Integer ultricies nec lacus sit amet semper.

Aenean vel aliquet augue. Ut a ullamcorper tellus, nec blandit metus. Sed posuere risus justo, vel lobortis dolor rutrum non. Aenean accumsan mollis facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec vestibulum hendrerit mi, eu interdum velit ultrices et. Vestibulum suscipit, nunc id accumsan semper, ipsum odio tincidunt metus, ac faucibus metus est eget nisi.

Nam aliquet, nunc ac vestibulum congue, massa nibh rhoncus purus, non rhoncus diam erat vel orci. Nulla facilisi. Morbi consequat orci ante, eu egestas risus facilisis vel. Duis rutrum consequat nibh a consectetur. Pellentesque eu ultrices orci. Fusce fringilla lobortis lacus, sed rutrum tellus facilisis sed. In suscipit ultrices risus. Ut cursus quam quam, eget pharetra lorem aliquam vel.

Ut at augue bibendum, lacinia ex non, maximus odio. Integer eu lacus aliquam, molestie dui nec, feugiat sem. Sed vitae urna metus. Phasellus est elit, rhoncus at risus ut, scelerisque euismod eros. Aenean vitae maximus sapien. Mauris in ligula et eros porta vulputate. Nam vitae elit augue. Sed finibus tortor et augue tempus euismod. Vestibulum mollis sit amet metus at tincidunt. Pellentesque non metus in ex pharetra aliquet vel nec diam. Sed justo enim, maximus sit amet arcu eget, ultrices ornare nisl. Nunc feugiat, nulla quis euismod scelerisque, dolor lorem scelerisque felis, quis euismod justo leo sit amet metus. Sed suscipit risus eget imperdiet cursus. Fusce pellentesque mollis dui et vestibulum.

Nullam nec dapibus odio, eget pharetra leo. Nullam pharetra ligula non eleifend maximus. Etiam ut fringilla enim, a rhoncus ipsum. Praesent semper nibh ut nunc lacinia commodo. Nullam ante nisl, sagittis in sagittis ut, viverra non lectus. Pellentesque convallis purus at posuere aliquet. Nulla nec purus sed neque facilisis pretium et id ex. Sed malesuada, nisi eu euismod placerat, quam enim scelerisque tortor, non accumsan ex justo in est. Vivamus convallis justo ac metus dapibus dignissim. Mauris dapibus tincidunt ligula, scelerisque lacinia quam euismod aliquet. Curabitur ullamcorper semper velit, et viverra felis sollicitudin dignissim. Nam vel pellentesque libero. Morbi placerat placerat dapibus. Duis faucibus tempor pellentesque.

Suspendisse ipsum velit, volutpat tempus tortor vel, ultrices ornare magna. Vestibulum vitae magna tellus. Proin sit amet vestibulum libero. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vestibulum tristique nunc faucibus, vulputate nisl pretium, dignissim ligula. Phasellus volutpat nisl non ex ultrices luctus. Aenean dictum ex nec imperdiet dapibus. Aenean quis volutpat mi. Integer egestas est ac bibendum dignissim. Proin quis porta quam. Aenean eu condimentum dolor, nec malesuada diam. Donec et scelerisque urna. Cras ipsum tortor, lacinia ullamcorper nisl a, commodo pretium quam. Pellentesque ut metus eget neque interdum aliquet. Integer vulputate ut massa in mollis. Morbi posuere elementum nulla vulputate commodo.

Praesent a nibh eu urna fringilla vehicula nec eu tellus. Sed condimentum aliquet massa, at lobortis nunc mollis eu. Phasellus congue erat ut condimentum ultricies. Mauris varius risus quam, non interdum ligula fringilla et. Sed sed quam venenatis, accumsan neque non, dignissim ligula. Suspendisse potenti. Nullam tempus venenatis urna, quis laoreet ante malesuada nec. Cras a neque in purus commodo euismod. Nunc tempus velit et ex convallis, commodo porttitor lacus dapibus. Pellentesque id neque sapien. In consectetur congue nisi vitae sagittis. Pellentesque at elit enim. Etiam sed dolor ut sem molestie accumsan eu volutpat est. Nam magna mauris, iaculis ac dapibus a, condimentum vitae justo.

Morbi cursus tellus ligula, ac fringilla felis suscipit commodo. Sed eget dignissim leo, in convallis orci. Pellentesque lacus dui, porttitor non varius sit amet, pellentesque quis tellus. Donec tortor enim, posuere vel nisi ac, iaculis cursus nisl. Integer volutpat libero sit amet leo convallis, vel tempus enim facilisis. Phasellus ornare lorem in magna placerat iaculis. Suspendisse felis sapien, pulvinar vel risus id, venenatis fringilla erat. Duis purus justo, elementum vitae gravida quis, consequat in augue. Vestibulum at urna a massa condimentum euismod.

In sed lectus mattis, malesuada nulla sed, viverra erat. Ut luctus turpis dolor, et scelerisque libero rhoncus ac. Nam vehicula sed sapien vitae pellentesque. Integer vitae elit sit amet mi venenatis pulvinar. Ut feugiat erat nec ullamcorper dapibus. Nam eleifend ex in odio fermentum, sed imperdiet velit tempor. Maecenas molestie ac tortor eget venenatis. Donec ultrices ligula nibh, et interdum diam ultrices et. Praesent non augue dolor. Fusce tristique elit a malesuada hendrerit. Suspendisse tempor urna id augue scelerisque, vitae posuere arcu vulputate. Aenean enim elit, commodo sed felis et, maximus sodales ante. In ut urna convallis nunc pellentesque fermentum. Donec a cursus metus. Proin nec est faucibus elit bibendum volutpat. Nullam libero felis, ultricies eget blandit quis, maximus sed ipsum.

Quisque rutrum, neque vitae elementum mattis, neque justo varius elit, nec viverra nibh orci quis massa. Aliquam at porta erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vitae dui nec diam pellentesque porta. Nullam orci mauris, dapibus a porttitor vel, venenatis in eros. In justo odio, tincidunt ut euismod et, lacinia et tellus. Quisque hendrerit ullamcorper tortor id ullamcorper. Praesent rutrum risus velit, quis venenatis ex convallis eget. Ut est nunc, sollicitudin eget malesuada vel, vulputate nec arcu. Nunc pretium interdum eros sed rutrum. Donec rhoncus augue eros, et tempus lectus interdum sit amet.