CHANGELOG ========= 5.3 --- * Add prototype definition for nested options 5.1.0 ----- * added fluent configuration of options using `OptionResolver::define()` * added `setInfo()` and `getInfo()` methods * updated the signature of method `OptionsResolver::setDeprecated()` to `OptionsResolver::setDeprecation(string $option, string $package, string $version, $message)` * deprecated `OptionsResolverIntrospector::getDeprecationMessage()`, use `OptionsResolverIntrospector::getDeprecation()` instead 5.0.0 ----- * added argument `$triggerDeprecation` to `OptionsResolver::offsetGet()` 4.3.0 ----- * added `OptionsResolver::addNormalizer` method 4.2.0 ----- * added support for nested options definition * added `setDeprecated` and `isDeprecated` methods 3.4.0 ----- * added `OptionsResolverIntrospector` to inspect options definitions inside an `OptionsResolver` instance * added array of types support in allowed types (e.g int[]) 2.6.0 ----- * deprecated OptionsResolverInterface * [BC BREAK] removed "array" type hint from OptionsResolverInterface methods setRequired(), setAllowedValues(), addAllowedValues(), setAllowedTypes() and addAllowedTypes() * added OptionsResolver::setDefault() * added OptionsResolver::hasDefault() * added OptionsResolver::setNormalizer() * added OptionsResolver::isRequired() * added OptionsResolver::getRequiredOptions() * added OptionsResolver::isMissing() * added OptionsResolver::getMissingOptions() * added OptionsResolver::setDefined() * added OptionsResolver::isDefined() * added OptionsResolver::getDefinedOptions() * added OptionsResolver::remove() * added OptionsResolver::clear() * deprecated OptionsResolver::replaceDefaults() * deprecated OptionsResolver::setOptional() in favor of setDefined() * deprecated OptionsResolver::isKnown() in favor of isDefined() * [BC BREAK] OptionsResolver::isRequired() returns true now if a required option has a default value set * [BC BREAK] merged Options into OptionsResolver and turned Options into an interface * deprecated Options::overload() (now in OptionsResolver) * deprecated Options::set() (now in OptionsResolver) * deprecated Options::get() (now in OptionsResolver) * deprecated Options::has() (now in OptionsResolver) * deprecated Options::replace() (now in OptionsResolver) * [BC BREAK] Options::get() (now in OptionsResolver) can only be used within lazy option/normalizer closures now * [BC BREAK] removed Traversable interface from Options since using within lazy option/normalizer closures resulted in exceptions * [BC BREAK] removed Options::all() since using within lazy option/normalizer closures resulted in exceptions * [BC BREAK] OptionDefinitionException now extends LogicException instead of RuntimeException * [BC BREAK] normalizers are not executed anymore for unset options * normalizers are executed after validating the options now * [BC BREAK] an UndefinedOptionsException is now thrown instead of an InvalidOptionsException when non-existing options are passed Guided Alaska Fishing Trips - Kenai River Fly Fishing

Hover Box Created with Sketch.

Choose Your Favorite!

Fly Fishing Trips Alaska

Upper Kenai River Half Day

Upper Kenai River Half Day

Half Day Fishing Trip on the Upper Kenai River

READ MORE
Upper Kenai River Full Day

Upper Kenai River Full Day

Full Day Fishing Trip on the Upper Kenai River

READ MORE
Upper Kenai Canyon Full Day

Upper Kenai Canyon Full Day

Full Day Fishing Trip in the Upper Kenai Canyon

READ MORE
Middle Kenai River Full Day

Middle Kenai River Full Day

Full Day Fishing Trip on the Middle Kenai River

READ MORE

Taking Reservations for the 2026 Season!

What We Offer

Driving Directions

Driving Directions

Please contact us one day in advance of your scheduled trip date to confirm departure time and location

Fishing Gear

Fishing Gear

Find out the ins and outs of what we provide and what you need to bring for your fly fishing experience

Lodging

Lodging

Find the perfect accommodations in or around Cooper Landing to reflect upon your recent adventures

Meeting Locations

Meeting Locations

Meeting locations may vary throughout the season – Please contact us one day in advance of your scheduled trip

River Report

River Report

Between the Sockeye Salmon coming in and the Trout fishing, now is the time. Get more info on the river here

Seasons

Seasons

Fishing varies throughout the season requiring us to cater our trips according to what is running at the time of booking.

If you are bug-eyed from perusing the Internet for the right guide service, simply give KRFF a call. Oh yea, be sure to include the “canyon” float into your schedule, you won’t be sorry.

Bret Curry
Brett Curry

We had a ball, and are already thinking about booking another trip for next year.  You’ll remember Tony’s “SOB” outbursts!

Don Ericson
Don Ericson

I have been fortunate to fish in Mexico, Hawaii, Texas and Canada. But this experience was the best. Of all the fish I chase, I still love to trout fish and nothing holds a candle to those crazy Rainbows in Alaska.

Richard Sirrs
Richard Sirrs
Meet our

Guides

Bayne Harpe

Bayne Harpe

Meet our newest addition to the team...
Jen Harpe

Jen Harpe

Born and raised in Alaska...
Mike Harpe

Mike Harpe

Born and raised in Washington...

Alaska Fly Fishing Trips

Half and Full Day Fishing Trips - Kenai Peninsula

Book Now!