Monthly Archiv: January, 2021

Absint PHP Template Engine Trait

Package:
Absint PHP Template Engine Trait
Summary:
Trait to render templates from inside any class
Groups:
PHP 7, Templates, Traits
Author:
wim niemans
Description:
This package provides a trait to render templates from inside any class...

Read more at https://www.phpclasses.org/package/11929-PHP-Trait-to-render-templates-from-inside-any-class.html#2021-01-06-05:06:31

Free ticket to The Online PHP Conference!

I'm very happy to be speaking at The Online PHP Conference this year. As you can guess from the title, this is an online event so is easily accessible right from your desk.

Sebastian, Arne, and Stefan are acknowledged experts in PHP development and so an opportunity to hear their thoughts is always welcome. In this case, they have also invited a number of us to share our thoughts as well, expanding on the topics covered. It should be a good event and I encourage to buy a ticket and attend.

One area where I've found in-person events have the edge on virtual ones is the so-called hallway track where speakers and attendees can interact in ad-hoc conversations. I've always had really good conversations where I can ask and answer interesting questions and we learn things in a more informal setting. So, I was excited to discover that thePHPCC have thought about this.

From A Happy New Year 2021:

In addition to presenting much more (and more diverse) content than last time, we have made our already famous Hallway Track even better, allowing for more informal exchange between attendees and speakers. This is definitely something to look forward to. After our first edition of The Online PHP Conference, many attendees said that taking part in the Hallway Track almost felt like attending a conference in person.

I'm intrigued!

Free tickets!

thePHP.cc have very kindly made available a couple of tickets to me that I can give to you! All you need to do is email me with your first name and last name. On Monday 11th January, I'll pick the winners at random. I'll delete your email afterwards and of course I'll only email you if you win.

If you don't win, get your company to buy a ticket anyway!

Finding a Niche as a Designer Isn’t Just an Overused Cliché

Here’s a scenario for you. Post-COVID, you’re out with your friends, and you’re getting hungry. The members of your group start suggesting places where you can go and grab some dinner. There are a lot of eclectic suggestions being thrown about – Chinese, Mexican, Thai, Greek – and none of you is sure what you’re going to choose. Here’s one thing you probably won’t do, however: go to an “all-purpose” restaurant which serves all of the above types of food, plus about 10 more.

Does that kind of restaurant even exist? Probably not, and that’s exactly my topic for today’s article. When you have too broad a reach with your design work, providing service to a range of clients who have little to nothing in common, you not only dilute the quality of service you’re able to provide each one individually, you also shortchange your own credibility and hamper the progress of your freelancing career.

Carving out a niche for yourself as a designer isn’t just an overused cliché; it’s an extremely valuable tool which will help you strengthen your personal brand and attract highly targeted, highly desirable clients.

First Rule of Design Club

So, what’s the first rule of niching down your client base? Figure out exactly which kind of clients you want to work with. You might think it doesn’t matter – money is money, right? Wrong.

The truth is, there are always going to be assignments which you find very enjoyable and which you excel at, and those which you loathe and couldn’t be finished with fast enough. You’re not doing yourself or your clients any favors by forcing yourself to produce work which causes you to die a little on the inside with each click of the mouse or stroke of the tablet.

And believe it or not, once you begin narrowing down your client outreach and increasing the value you provide to your specific corner of the market, you’ll find you’ll still have plenty of prospects who will be thrilled to hire you. Why? Because you’re no longer just a generic designer – you’re a designer who caters specifically to their needs.

People find much greater value in a service that seems tailor-made for them, versus someone who will take money from anyone and everyone. Remember, freelancing is like an exclusive club – the more you restrict entry, the more enticing it becomes to those who actually do qualify, and the more you can charge as a result.

this door is blocked

Staying on Brand

After you’ve determined which clients would be best suited to your services, it’s time to start building a consistent brand. There have been entire books written on branding itself, but I’ll say simply that it’s extremely important that your brand have consistency and that your work always be a reflection of your brand. If you cater to two completely different markets with your work, it might be helpful to simply separate them in different corners of the web to avoid confusion.

Also remember that your brand is not you specifically (if it is, you might want to consider a career in reality television). No potential client wants to hear about your dog-washing escapades or that crazy house party you attended when they’re reading your professional design blog. Keeping your personal and professional life mostly separate will ensure that your clients will only have positive things to say about you as a businessperson.

The Market Within the Market

It’s not only your clients who will benefit from your services as a designer – it’s also, and even more so, the markets they serve with their businesses. That lawyer client you’re designing for has clients of there own; that shop owner has an entire community full of regular and new customers.

It’s important for you, as a designer, to get to know those user markets – conduct research to find out what they’re buying and why. If you’re a designer who mainly services clients in the independent medical practice field, get to know some of the patients who will be accessing those websites, reading those brochures, or taking those business cards you design.

Knowing your niche market’s market will greatly improve your accuracy when you set out to design for them. If you haven’t taken the time to talk to these people and collect data on their consumer habits, even your most educated guesses will be filled with inaccuracies, and your clients will lose business if they’re too far off the mark. Which, of course, probably means that you’ll lose business as well.

this is the sign you have been looking for neon dark

Hard Numbers

You might think that narrowing down your client base too much will cause too many people to dislike your work or discount the services you provide, since they’ll not be seeing anything which caters to them. And you’d be right – you can’t appeal to everyone, and you shouldn’t even be trying. But is it a bad thing that you can’t appeal to everyone?

Consider last year as a freelancer for a moment. (If you’re new to freelancing, just pretend you’ve had a successful year of working with clients.) How many clients did you have on your ‘would like to work with’ list? 50? 100? Even more? How many did you actually work with? Probably a lot less. Did you go bankrupt? The truth is, we always want to take on more clients than we are physically able to, which is harmless until we actually start attempting to do it.

In order to successfully focus on a niche, it’s important to think about the number of clients you actually need in order to have a financially successful year. If that number is 10, then it’s 10. If it’s 15, or 20, or 30, well, that’s all it is.

If you don’t need 100 potential clients to be successful (and you don’t if you’re conducting business properly), it’s pointless to try to appeal to 100 different kinds of people. 100 people will have 100 different opinions on what a good designer should provide; 10 people only have 10 different opinions. Which do you think is easier to cater to?

numbers calculator neon pad notes money coins

When you figure out how to provide the exact kind of value your clients need, as well as the value their end users are looking for, you have the ability to drive the strength of their customer outreach.

Your intimate, insider knowledge will allow you to zoom in on the likes and dislikes of your clients and their users – what they’re looking for, what they most want to avoid. You can literally create the world in which they do business. That’s the power of niching it down.

The post Finding a Niche as a Designer Isn’t Just an Overused Cliché appeared first on Speckyboy Design Magazine.

Absint PHP Template Engine Trait

Package:
Absint PHP Template Engine Trait
Summary:
Trait to render templates from inside any class
Groups:
PHP 7, Templates, Traits
Author:
wim niemans
Description:
This package provides a trait to render templates from inside any class...

Read more at https://www.phpclasses.org/package/11929-PHP-Trait-to-render-templates-from-inside-any-class.html#2021-01-05-15:54:31

Absint PHP Template Engine Trait (New)

Package:
Absint PHP Template Engine Trait
Summary:
Trait to render templates from inside any class
Groups:
PHP 7, Templates, Traits
Author:
wim niemans
Description:
This package provides a trait to render templates from inside any class...

Read more at https://www.phpclasses.org/package/11929-PHP-Trait-to-render-templates-from-inside-any-class.html

Community News: Latest PECL Releases (01.05.2021)

Latest PECL Releases:

  • yar 2.2.0
    - PHP8 Supported

  • xmlrpc 1.0.0RC1
    This is the snapshot of ext/xmlrpc just before it was unbundled from php-src. Only minimal modifications have been made thereafter.
  • xdebug 3.0.2
    Mon, Jan 04, 2021 - Xdebug 3.0.2

    = Fixed bugs:

    • Fixed issue #1907: Empty exception message when setting the $message property to a stringable object
    • Fixed issue #1910: Code coverage misses constructor property promotion code
    • Fixed issue #1914: Compillation failure on OpenBSD
    • Fixed issue #1915: Debugger should only start with XDEBUG_SESSION and not XDEBUG_PROFILE
    • Fixed issue #1918: Warn if PHP's Garbage Collection is disabled in gc_stats mode
    • Fixed issue #1919: Crash when enabling filter without the right mode active
    • Fixed issue #1921: Xdebug does not start step debugging if start_with_request=trigger
    • Fixed issue #1922: Code coverage misses array assignment lines
    • Fixed issue #1924: Deprecated INI settings displayed in phpinfo()
    • Fixed issue #1925: xdebug.start_with_request and start_upon_error display inconsistent values
    • Fixed issue #1926: Add Xdebug mode's source to xdebug_info() output
    • Fixed issue #1927: Crash when calling xdebug_stop_trace without a trace in progress
    • Fixed issue #1928: xdebug_stop_gcstats() can also return false
  • xlswriter 1.3.7
    - Fix IBM s390x. - Fix header line no and sheet checkout not init line no. - Fix single instance opens multiple files, but the file handle is not released. - Feat worksheet printed. - Feat worksheet hidden. - Feat workbook custom first worksheet. - Feat custom skip hidden rows. - Feat skip empty rows. - Feat set global type. - Feat url text and tool tip. - Feat work sheet protection. - Helper xlswriter_get_version and xlswriter_get_author
  • datadog_trace 0.53.0
    ### Added - Add function to correctly extract trace id in all contexts #1125 ### Fixed - Attach fatal errors to userland root span on PHP 5.6 + PHP 5.5 #1109 - Rebuild CentOS 6 containers #1116 - NullLogger is essential, not optional #1113 - Make Uri to resource name normalization case insensitive #1120 - Avoid empty resource names in Yii in case of root `/` paths #1122 - Fix multiple deferred integration loading on PHP from 7.0 to 7.2 #1121 - Fix error in case of x-datadog-origin header in distributed tracing on PHP 7.0-7.2 #1124
  • PKCS11 0.1
    Initial Release
  • PDO_IBM 1.4.1
    * 2020-12-22: 1.4.1 - Fix memory leaks - Remove PHP compatibility stubs and ifdefs - Fix compile warnings - Fix tests with PHP 8 exceptions

The Challenge of Switching from a Page Builder to the WordPress Gutenberg Block Editor

The time has come. The WordPress Gutenberg block editor has become reliable enough to power your existing website. You can now eschew that aged page builder plugin in favor of a native content editor.

That’s the situation I’ve found myself in. A client that has, for years, utilized a bundled, out-of-date page builder is ready for change. Thus, I’m charged with helping to convert existing layouts and features to blocks.

It’s been a very interesting process. And it’s something that I’m betting other web designers our there are facing.

With that, I’d like to share a few things I’ve learned along the way (Hint: there are a lot of challenges.) But by identifying the pain points early, it’s possible to smooth out those bumps in the road. Here we go!

Why Switch to Gutenberg?

Before we dig into all of the nitty-gritty, let’s set the stage for what we’re dealing with. While some of this is specific to my particular project, I suspect it’s also representative of a fairly common situation.

A Page Builder That Is Frozen in Time

Page builder plugins are fine to use, so long as you are committed to keeping them over the long term. But too often, they come bundled as part of a theme and simply aren’t kept up-to-date.

In this case, the plugin still works fairly well. But impending changes to WordPress itself mean its days could be numbered.

Another obstacle is that the page builder has some custom extensions to carry out client-specific functionality. So, any change of editing tools needs to take this into account.

A Layout Built with a Page Builder Plugin

A Decision to Go Native

Sure, it’s possible to grab a new license for the page builder and update the software. But again, there is a long-term commitment involved in using these tools. This not only means keeping up with licensing, but locking yourself into a third-party method of content creation.

Gutenberg, on the other hand, is a native solution. Since it’s part of WordPress core, there’s one less link in the chain of maintenance. It can also be customized to do pretty much anything you’d want to achieve.

That being said, the block editor doesn’t come with every feature imaginable. So that means either building what you need or finding third-party plugins to do it for you.

But, in the end, it (comparatively) offers the most sustainable path. Therefore, a switch is recommended.

Replicating Layouts Is Relatively Easy

One of the big reasons to use a page builder is that creating complex layouts is a breeze. Whether you need multiple rows, columns or a combination of the two, it’s all within reach. With just a few clicks, drags and drops, you’ll have the layout you envisioned.

In some cases, this might be the primary task a page builder is being used for. If so, the transition to the Gutenberg block editor won’t be too difficult.

Granted, you’ll have to start from scratch when building layouts with blocks. However, the combination of the included Columns and Group blocks can simplify the process. If you need to repeat a certain layout, a custom block pattern will be of great help.

The downside? The block editor’s UI may not allow for quite as much control as some page builders. Therefore, you might have to choose between approximating a layout or putting in some extra work with CSS.

A Custom Layout in the Gutenberg Block Editor

Want Similar Functionality? It’s Hit or Miss.

By default, Gutenberg isn’t meant to provide all of the same functionality as a page builder. It aims to provide a solid starting point. Therefore, changing over from a page builder could send you on a wild goose chase.

You may find what you need out there in the form of a block plugin. As it is with layouts, the features available in a block may not be identical to what your page builder has. That could mean making some compromises or taking things in a different direction.

The other option, and the thing that sets the block editor apart, is the ability to create your own custom blocks. This allows you to build features that suit your needs exactly.

Much is possible with a custom block, though it ultimately depends on your development skills. Natively built blocks require knowledge of React – something not everyone (including yours truly) has.

Thankfully, there are other techniques. For example, I create blocks via Advanced Custom Fields. It’s a tool I’m familiar with, which makes the process that much easier.

Yes, there are some dependencies involved. But if a block needs to be rebuilt natively in the future, well, that’s possible. But, unlike a page builder, a complete change of editors would not be needed.

Advanced Custom Fields Editor Screen

Implementation Requires a Plan

Starting off a website redesign with a new editor is ideal. It offers the chance for a clean slate. But what if you’re trying make the switch on an existing site?

To convert page builder-based content over to the block editor requires planning. In a perfect world, you’d just release it all at once. But that’s not always feasible – especially on larger websites.

So, what do you do? For starters, it helps to have a staging environment. That will allow you to create an exact duplicate of your production website and test out the necessary changes. It can act as a proving ground of sorts for custom blocks. This prevents any unanticipated problems from bothering your users.

Even better is that, if your site doesn’t change much, you might be able to push all of those changes from staging to production.

If that’s not the case, then a piecemeal approach may be in order. This could involve converting a single page at a time.

One way to do safely do this is to create a new page (hidden from public view), then build it to suit your needs. From there, you can replace the old one when ready. Gutenberg’s Code Editor view allows you to copy and paste all of that block data into another page. Just be sure to create backups and test as much as possible before making any permanent changes.

Regardless, it’s imperative to study up on your website’s page builder usage. Then create a plan around replacing it with the block editor.

Code Editor View of the WordPress Block Editor

Building with Blocks for the Future of WordPress

Switching your existing website from a page builder to the Gutenberg block editor can be challenging – but very doable. It’s a process that requires untangling the content built with your previous editor and recreating it with blocks.

The level of difficulty depends on a few key factors. For one, the amount and type of content that utilizes the old page builder will determine the workload in front of you.

In addition, the degree that you need to replicate the look and functionality within Gutenberg is also important. If elements can be reimagined, it’s actually a good opportunity to improve your website. But the stricter the adherence to the previous way of doing things, the more difficult it becomes.

Regardless, moving over to Gutenberg may be the most future-friendly solution. Under the right circumstances, that alone will make it worth the effort.

The post The Challenge of Switching from a Page Builder to the WordPress Gutenberg Block Editor appeared first on Speckyboy Design Magazine.

The Month in WordPress: December 2020

We bid goodbye to 2020 in style with the release of WordPress 5.6 and the launch of Learn WordPress. But these weren’t the only exciting updates from WordPress in December. Read on to learn more!


WordPress 5.6 is here

The latest major WordPress release, version 5.6 “Simone”, came out on December 8. The release ships with a new default theme called Twenty Twenty One. It offers a host of features, including:

  • Greater layout flexibility
  • More block patterns
  • Video captioning support
  • Auto-updates
  • Beta-compatibility for PHP 8.0
  • Application password support for the REST API
  • Updates to jQuery

In addition, WordPress 5.6 is now available in 55 languages. You can find more information about the release in the field guide, and you can update to the latest version directly from your WordPress dashboard or by downloading it directly from WordPress.org. A total of 605 people hailing from 57 different countries contributed to the development of WordPress 5.6. @audrasjb has compiled many more stats like that, showing what a tremendous group effort this was—they’re well worth a read!

Want to contribute to upcoming WordPress releases? Join the WordPress #core channel on the Make WordPress Slack and follow the Core team blog to learn the latest on WordPress 5.7, which is slated to be out by March 9, 2021. The Core team hosts weekly chats on Wednesdays at 5 a.m. and 8 p.m. UTC.

Watch the State of the Word 2020 recording

State of the Word 2020, the annual keynote address delivered by WordPress co-founder Matt Mullenweg, was streamed online for the first time on December 17. It was followed by a live Q&A from community members all across the world. You can find the stream recording on YouTube, Facebook, and Twitter. The State of the Word video and the Q&A session are also available on WordPress.tv. 

Learn WordPress has launched

Learn WordPress, a new free, on-demand WordPress learning resource, launched officially on December 15. It offers workshops, lesson plans, quizzes, and courses for anyone interested in publishing with, building for, or contributing to WordPress. WordPress enthusiasts can also participate in discussion groups focused on specific topics to learn with and from each other.

Want to participate in Learn WordPress? Here are four ways you can do so! Additionally, contributors have launched a discussion on the future of Learn WordPress—feel free to share your thoughts in the comments. To help promote Learn WordPress, check out the Marketing Team’s materials, which detail a range of fun and creative ways to share this new resource.

Give feedback on the Full Site Editing project

Contributor teams have kicked off the Full Site Editing (FSE) outreach program for anyone who is building or maintaining a WordPress site so that they can give feedback on the upcoming FSE feature that will be part of Gutenberg Phase 2. Your feedback will go a long way in improving FSE user flows. To participate, check out the initial testing call on the Make/Test blog and join the #fse-outreach-experiment Slack channel.

Want to follow updates on the FSE project? Check out this blog post. You can find 2020 updates to the FSE project in the Make/Core blog.

BuddyPress 7.0 “Filippi” and 7.10 are now available

BuddyPress version 7.0 went live on December 9. Its features include: 

  • New administration screens to manage Member and Group Types
  • New BP blocks for posts and pages
  • A default profile image for network sites
  • Improved BuddyPress Noveau support for the Twenty Twenty One theme. 

A BuddyPress maintenance release (version 7.1) launched on December 21. 

Want to provide feedback or suggestions for BuddyPress? Share your comments on the announcement posts for 7.0 or 7.1. If you find a bug, please report it in the support forums

Gutenberg 9.5 and 9.6 released

The Core team launched version 9.5 and 9.6 of Gutenberg last month. Both versions include several improvements to FSE flows, bug fixes, and feature upgrades. Version 9.5 introduces features like full height alignment and support for font sizes in the code block. Version 9.6 includes features like the ability to drag blocks from the inserter and a vertical layout for buttons. 

Want to get involved in building Gutenberg? Follow the Core team blog, contribute to Gutenberg on GitHub, and join the #core-editor channel in the Making WordPress Slack group.


Further Reading


Have a story that we should include in the next “Month in WordPress” post? Please submit it using this form.

PHP DI Container Class

Package:
PHP DI Container Class
Summary:
Inject functionality in a class using other class
Groups:
Language, PHP 5, Utilities and Tools
Author:
A. B. M. Mahmudul Hasan
Description:
This class can be used to inject functionality in a class using other class or a closure function...

Read more at https://www.phpclasses.org/package/11927-PHP-Inject-functionality-in-a-class-using-other-class.html#2021-01-04-02:02:21
Powered by Gewgley